如何索引字符串数组

我在C#3.5中有一个字符串数组:

string [] times = new[] {“08:00 am” , “10:00 am”, “120”} ; 

我想创建索引到时间: StartTimeEndTimeElapsedTime这样当我编码时:

 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");