如何索引字符串数组

时间:2009-07-21 14:32:59

标签: c#

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

但有更简单的方法吗?

6 个答案:

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