Обходной путь: используйте обнуляемый параметр.ИМО, в любом случае это чище, так как специальное значение явно отличается, а не просто от нормального значения.
void A(DateTime? p=null)
{
}
Другая альтернатива:
void A(DateTime p=default(DateTime))
{
}
Что показывает, что параметр по умолчанию может использовать default(T)
как действительное значение параметра по умолчанию для пользовательских типов.
Или просто перегрузите метод для другого количества параметров.