簡體   English   中英

如何索引字符串數組

[英]How to index a string array

我在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”“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<string, string> times = new Dictionary<string, string>();
times.Add("StartTime","09:00am");
times.Add("EndTime","11:00am");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM