Вы можете сделать типы значений обнуляемыми, используя оператор ?
в C #:
DateTime? myDate = null;
Отсюда вы можете сделать параметр необязательным:
void Foo(DateTime? myDate = null)
{
}
Дополнительная информация о типах Nullable.
Это не единственный способ снять шкуру с кошки, однако вы можете использовать default(DateTime)
, однако вы не можете использовать DateTime.MinValue
, MaxValue
или Now
в дополнительных параметрах, поскольку они не компилировать постоянные времени.
Конечно, вам не нужно использовать необязательные параметры, вы можете использовать перегруженные методы, если хотите использовать Min, Max или Now.
void Foo()
{
Foo(DateTime.MinValue);
}
void Foo(DateTime d)
{
}
Если вы хотите переборщить (ну, может, не перебор, множество веских причин для этого), тогда вы можете определить новый тип даты, который понимает, когда он имеет значение:
class SmarterDateTime
{
public bool IsSet { get; set; }
// Wrapper around DateTime etc excluded.
}
Что касается того, что должно быть значением по умолчанию , вы можете выбрать, чтобы любая дата представляла собой дату по умолчанию, если вы хотите, но для таких вещей, как необязательные параметры, у вас будут ограничения.
Лично я склонен использовать DateTime.MinValue
.