如何索引字符串数组
我在C#3.5中有一个字符串数组:
string [] times = new[] {“08:00 am” , “10:00 am”, “120”} ;
我想创建索引到时间: StartTime
, EndTime
, ElapsedTime
这样当我编码时:
StartTime= “09:00 am” ; EndTime= “11:00 am” ;
然后将times[0]
设置为“09:00 am”
等。
我可以创建3种方法:
private void StartTime(string time) { times[0] = time; } private void EndTime(string time) { times[1] = time; } private void ElapsedTime(string time) { times[2] = time; }
和代码
StartTime("09:00");
但有更简单的方法吗?
你应该做的是创建一个新的类来做到这一点。 制作两次属性。
并且经过的时间是开始和结束时间的函数。
class Time { public DateTime StartTime{ get; set; } public DateTime EndTime{ get; set; } public String[] ToStringArray() { String[] ret = new String[3]; ret[0] = StartTime.ToString(); ret[1] = EndTime.ToString(); ret[2] = ElapsedTime().ToString(); return ret; } public TimeSpan ElapsedTime() { return EndTime.subtract(StartTime); } }
我不知道它更简单,但我建议从代码中取出硬索引引用并用常量替换它们,以便在将来更改数组中元素的顺序时更容易维护:
private const int START_TIME = 0; private const int END_TIME = 1; private const int ELAPSED_TIME = 2;
然后您还将获得更具可读性的代码:
times[END_TIME] = time;
除非你想要更加面向对象,否则你应该遵循jjnguy的建议。
要添加到jjnguy的答案,你应该有一个包含3个属性的类,然后如果你需要一个数组,你可以拥有一个只有一个getter的公共属性,并在一个字符串数组中返回3个不同的时间。
使用字典。 看到这里 。
扩展方法怎么样?
public static class Extensions { public static void StartTime(this string[] array, string value) { array[0] = value; } }
你可以用字典做到这一点。
例如
Dictionary times = new Dictionary(); times.Add("StartTime","09:00am"); times.Add("EndTime","11:00am");