我在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");
但有更简单的方法吗?
答案 0 :(得分:20)
你应该做的是创建一个新类来完成这项工作。制作两次属性。
经过的时间是开始和结束时间的函数。
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);
}
}
答案 1 :(得分:3)
我不知道它更简单,但我建议从代码中取出硬索引引用并用常量替换它们,以便在将来更改数组中元素的顺序时更容易维护:
private const int START_TIME = 0;
private const int END_TIME = 1;
private const int ELAPSED_TIME = 2;
然后您还将获得更易读的代码:
times[END_TIME] = time;
除非你想更加面向对象,否则你应该遵循jjnguy的建议。
答案 2 :(得分:2)
要添加到jjnguy的答案,你应该有一个包含3个属性的类,然后如果你需要一个数组,你可以拥有一个只有一个getter的公共属性,并在一个字符串数组中返回3个不同的时间。
答案 3 :(得分:0)
使用字典。请参阅here。
答案 4 :(得分:0)
扩展方法怎么样?
public static class Extensions
{
public static void StartTime(this string[] array, string value)
{
array[0] = value;
}
}
答案 5 :(得分:0)
您可以使用字典执行此操作。
e.g。
Dictionary<string, string> times = new Dictionary<string, string>();
times.Add("StartTime","09:00am");
times.Add("EndTime","11:00am");