2011-01-18 73 views
1

使用DateTime對象我有這樣的枚舉:內枚舉

public enum TimePeriod 
{ 
    Day = DateTime.Now.AddDays(-1), 
    Week = DateTime.Now.AddDays(-7), 
    Month = DateTime.Now.AddMonths(-1), 
    AllTime = DateTime.Now 
} 

但不能做

(DateTime)timePeriod 

我怎樣才能給出一個枚舉的日期?

+0

我甚至沒有想過使用這樣的枚舉。 (聯合國)幸運的是,它不能像那樣使用。 – Tx3

回答

8

在C#,默認的基本類型爲enumint,不幸的是僅支持基本數據類型,如intshortuint等。因此,在.NET中不可能在enum中存儲DateTimes

當然你也可以做一個靜態類,其暴露出DateTimes你需要使它像一個enum這樣的而不是靜態屬性:

public static class TimePeriod 
{ 
    public static DateTime Day{ get{return DateTime.Now.AddDays(-1);}}, 
    public static DateTime Week{ get{return DateTime.Now.AddDays(-7);}}, 
    public static DateTime Month{ get{return DateTime.Now.AddMonths(-1);}}, 
    public static DateTime AllTime{ get{return DateTime.Now;}}, 
} 

而且使用這樣的:

myDateTime = TimePeriod.Month; 
+0

我正在使用此網址,例如/新聞/索引/周/有沒有辦法,我可以使用靜態類翻譯單詞「周」? – raklos

+0

如果你想得到屬性的實際名稱,你將不得不使用反射來獲取它。 –

+0

是否有可能以某種方式強制這些值之一的輸入參數,使其爲靜態類型? –

0

你應該使用一個類,而不是一個枚舉。

1

除了Oyvind的回答。枚舉值必須是常量值而不是變量。