C# 如何为字符串数组编制索引

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) {

我在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)
{    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我将该功能添加到示例中。我将该功能添加到示例中。