C# 如何为字符串数组编制索引
我在C#3.5中有一个字符串数组: 我想创建时间索引:C# 如何为字符串数组编制索引,c#,C#,我在C#3.5中有一个字符串数组: 我想创建时间索引:StartTime,EndTime,ElapsedTime,以便在我编码时: StartTime= “09:00 am” ; EndTime= “11:00 am” ; 然后将时间[0]设置为“09:00am”,以此类推 我可以创建3种方法: private void StartTime(string time) { times[0] = time; } private void EndTime(string time) {
StartTime
,EndTime
,ElapsedTime
,以便在我编码时:
StartTime= “09:00 am” ;
EndTime= “11:00 am” ;
然后将时间[0]
设置为“09:00am”
,以此类推
我可以创建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);
}
}
您真正应该做的是创建一个新类来实现这一点。使两倍属性 经过的时间是开始和结束时间的函数
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的建议。我不知道这更简单,但我建议从代码中去掉硬索引引用,并用常量替换它们,以便在数组中的元素顺序将来发生变化时更容易维护:
private const int START_TIME = 0;
private const int END_TIME = 1;
private const int ELAPSED_TIME = 2;
然后您还将获得更可读的代码:
times[END_TIME] = time;
除非您想更加面向对象,否则在这种情况下,您应该遵循jjnguy的建议。扩展方法如何
public static class Extensions
{
public static void StartTime(this string[] array, string value)
{
array[0] = value;
}
}
扩展方法怎么样
public static class Extensions
{
public static void StartTime(this string[] array, string value)
{
array[0] = value;
}
}
你可以用字典来做这件事 e、 g
Dictionary times=newdictionary();
添加(“开始时间”,“上午9:00”);
添加(“结束时间”,“上午11:00”);
您可以使用字典来完成此操作
e、 g
Dictionary times=newdictionary();
添加(“开始时间”,“上午9:00”);
添加(“结束时间”,“上午11:00”);
要添加到jjnguy的答案中,你应该有一个包含3个属性的类,如果你需要一个数组,你可以有一个公共属性,它只包含一个getter并在字符串数组中返回3个不同的时间。要添加到jjnguy的答案中,你应该有一个包含3个属性的类,如果你需要一个数组,你可以有一个公共属性,它只有一个getter,并在一个字符串数组中返回3个不同的时间。当你应该在一个包含私有成员的类中使用数组时,为什么要使用数组?当你应该在包含私有成员的类中使用数组时,为什么要使用数组?+1 show他拥有一个公共属性,可以返回字符串数组中的所有3个元素,这将是一个完美的解决方案:)@Matt:我想说这是值得的(我写这篇文章的时候是95)。这是一个很好的代码设计课程。让你的代码模型成为你所要做的。我在tostringaray()中添加了一个return语句,我认为这在C#3.0中仍然是必要的,但如果需要,请删除wrong@Patrick我不希望那种方法真的奏效。但是谢谢你的修复<代码>:P+1向他展示一个公共属性,它在一个字符串数组中返回所有3个,然后这将是一个完美的解决方案:)@Matt:我会说这是值得的(当我写这篇文章时是95)。这是代码设计的一个很好的教训。让你的代码模型成为你所要做的。我在tostringaray()中添加了一个return语句,我认为这在C#3.0中仍然是必要的,但如果需要,请删除wrong@Patrick我不希望那种方法真的奏效。但是谢谢你的修复<代码>:P我将该功能添加到示例中。我将该功能添加到示例中。