Почему я не могу использовать DateTime.MinValue и int.MinValue в качестве необязательных значений в C # 4.0? - PullRequest
1 голос
/ 03 ноября 2010

Может кто-нибудь объяснить, что не так со следующей сигнатурой метода, написанной с использованием C # 4.0?

public void Test(string arg1 = string.Empty, DateTime arg2 = DateTime.MinValue){}

Я понимаю разницу между "" и строкой. Пустой с точки зрения проверки времени компиляции, но, конечно, способ, который необязателенпараметры, реализованные в C # 4.0, довольно неадекватны, если вы не можете объявить разумное значение типа сравнения нулевого стиля?

Ответы [ 2 ]

6 голосов
/ 03 ноября 2010

Поскольку DateTime.MinValue и DateTime.MaxValue не являются постоянными времени компиляции - это поля readonly, которые инициализируются во время выполнения статическим конструктором DateTime.

См. Разницу между полями const (которые являются константами времени компиляции) и полями readonly (которые не являются): В чем разница между const и readonly?

0 голосов
/ 03 ноября 2010

В качестве значений параметров можно использовать только литеральные значения, постоянные значения и новые экземпляры объектов.

...