[英]How to index a string array
我在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”
, “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.