我有这个枚举:
public enum TimePeriod
{
Day = DateTime.Now.AddDays(-1),
Week = DateTime.Now.AddDays(-7),
Month = DateTime.Now.AddMonths(-1),
AllTime = DateTime.Now
}
但不能
(DateTime)timePeriod
如何获得枚举日期?
答案 0 :(得分:8)
在C#中,enum
的默认基础类型为int
,不幸的是,它仅支持int
,short
,uint
等基本数据类型等等。因此,在.NET中无法将DateTimes
存储在enum
内。
你当然可以创建一个静态属性的静态类,它暴露你需要的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;
答案 1 :(得分:1)
除了Oyvind的回答。枚举值必须是常量值而不是变量。
答案 2 :(得分:0)
你应该使用一个类,而不是枚举。