minvalue c# datetime compile-time-constant

datetime minvalue c# sql server



C#- ¿Por qué DateTime.MinValue y MaxValue no son constantes en tiempo de compilación? (2)

No puede definir una constante DateTime (o estructuras). Desde MSDN los tipos permitidos para const son:

Uno de los tipos: byte, char, short, int, long, float, double, decimal, bool, string, un tipo de enumeración o un tipo de referencia.

Quería tener un parámetro de fecha opcional para un método (predeterminado para MinValue), para verificar si el usuario realmente había proporcionado un valor o no (el suministro de MinValue no era válido), pero no estoy permitido ya que aparentemente no es una compilación -tiempo constante.

De acuerdo con la página de MSDN , "El valor de esta constante es equivalente a 00: 00: 00.0000000, 1 de enero, 0001."

Entonces, ¿por qué eso no es una constante de compilación? ¿Y por qué es diferente de pasar en Int32.MinValue, que está permitido?


Solución alternativa: use un nullable como parámetro. En mi opinión, esto es más limpio ya que el valor especial es claramente diferente y no solo un valor normal.

void A(DateTime? p=null) { }

Otra alternativa es:

void A(DateTime p=default(DateTime)) { }

Lo que muestra que un parámetro predeterminado puede usar el default(T) como valor de parámetro predeterminado válido para los tipos definidos por el usuario.

O simplemente sobrecargue el método para el número diferente de parámetros.