Подтвердить что ты не робот

Почему не разрешено создавать константу datetime в .net?

Я хочу создать константу datetime в .net, но получив сообщение об ошибке

const DateTime dt = Convert.ToDateTime("02/02/2014");

'System.DateTime' не может быть объявлен как const.

4b9b3361

Ответ 1

DateTime не является родным типом на языке С# - это структура из библиотек .Net.

В С# вы можете создавать константы только из типов родного языка, и вы можете инициализировать их только значениями, которые могут быть вычислены во время компиляции. DateTime.Now не может быть вычислен во время компиляции.

(Единственным ссылочным типом, который вы можете использовать с константой, является строка, и это потому, что строки обрабатываются специально.)

См. http://msdn.microsoft.com/en-gb/library/e6w8fe1b%28v=vs.71%29.aspx

Ответ 2

Даже если вы могли бы объявить DateTime как const (который вы не можете, как указывали другие ответы), вам нужно будет использовать константу времени компиляции, так как значение - и DateTime.Now, безусловно, не константа времени компиляции.

Это действительно верно:

static readonly DateTime dt = DateTime.Now();

Обратите внимание, что это будет "любое время, когда инициализатор типа для типа запускался". Это редко особенно полезно, если вы не гарантируете его инициализацию при запуске, предполагая, что вы пытаетесь измерить...