использование объекта DateTime внутри enum - PullRequest
1 голос
/ 18 января 2011

У меня есть это перечисление:

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

но не могу сделать

(DateTime)timePeriod

как я могу получить дату с учетом перечисления?

Ответы [ 3 ]

8 голосов
/ 18 января 2011

В C # базовым типом по умолчанию для enum является int, и, к сожалению, он поддерживает только базовые типы данных, такие как int, short, uint и т. Д. Поэтому сохранение DateTimes внутри enum невозможно в .NET.

Вы, конечно, можете создать статический класс со статическими свойствами, который откроет 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 голос
/ 18 января 2011

В дополнение к ответу Ойвинда. Enums Значения должны быть постоянными, а не переменными.

0 голосов
/ 18 января 2011

Вы должны использовать класс, а не перечисление для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...