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.