Estaba escribiendo un método que toma el valor DateTime
como uno de sus parámetros. Decidí que era un parámetro opcional, así que continué e intenté hacer DateTime.MinValue
como predeterminado.Por qué DateTime.MinValue no se puede usar como parámetro opcional en C#
private void test(string something, DateTime testVar = DateTime.MinValue) {
}
Sin embargo, esto da un error que:
valor de parámetro por defecto de 'testvar' debe ser una constante de tiempo de compilación.
El uso de este código parece funcionar bien.
private void test(string something, DateTime testVar = new DateTime()) {
}
me dieron consejos para usar DateTime.MinValue instead of new DateTime() ya que es auto-documentado. Desde new DateTime()
es básicamente lo mismo que DateTime.MinValue
no se puede utilizar? ¿También habrá algún problema potencial si lo dejo con new DateTime()
?
Enfoque alternativo: ¿Cuándo tiene sentido que un valor predeterminado sea DateTime.MinValue? Me doy cuenta de que es * default * para DateTime, pero ¿es realmente un valor apropiado para el método dado? O tal vez si no se proporciona el valor, ¿no debería simplemente ser nulo? –
He estado usando 'DateTime.MinValue' en todas partes al obtener valores de SQL que era nulo ya que' DateTime' no puede contener nulos. 'DateTime?' Es. – MadBoy
ese es el punto al que estoy llegando, y es más aplicable aquí. Si está mapeando a una base de datos que admita fechas anulables, parece apropiado usar fechas anulables en su código, y luego las fechas sin valores simplemente serán nulas, ya que están en su base de datos. Simplemente un pensamiento. –