在枚举中使用DateTime对象

时间:2011-01-18 12:25:57

标签: c# enums

我有这个枚举:

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

但不能

(DateTime)timePeriod

如何获得枚举日期?

3 个答案:

答案 0 :(得分:8)

在C#中,enum的默认基础类型为int,不幸的是,它仅支持intshortuint等基本数据类型等等。因此,在.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)

你应该使用一个类,而不是枚举。