Почему не разрешено создавать константу datetime в .net?
Я хочу создать константу datetime в .net, но получив сообщение об ошибке
const DateTime dt = Convert.ToDateTime("02/02/2014");
'System.DateTime' не может быть объявлен как const.
Ответы
Ответ 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();
Обратите внимание, что это будет "любое время, когда инициализатор типа для типа запускался". Это редко особенно полезно, если вы не гарантируете его инициализацию при запуске, предполагая, что вы пытаетесь измерить...