Stavo scrivendo un metodo che prende il valore DateTime
come uno dei suoi parametri. Ho deciso che è un parametro facoltativo, quindi sono andato avanti e ho provato a rendere DateTime.MinValue
come predefinito.Perché DateTime.MinValue non può essere utilizzato come parametro opzionale in C#
private void test(string something, DateTime testVar = DateTime.MinValue) {
}
Tuttavia, questo dà un errore che:
predefinito valore di parametro per 'testVar' deve essere una costante fase di compilazione.
L'utilizzo di questo codice sembra funzionare correttamente.
private void test(string something, DateTime testVar = new DateTime()) {
}
mi è stata data consiglio di utilizzare DateTime.MinValue instead of new DateTime() come è auto-documentazione. Dal new DateTime()
è praticamente la stessa cosa perché non è possibile utilizzare DateTime.MinValue
? Inoltre ci sarà qualche potenziale problema se lo lascio con new DateTime()
?
Approccio alternativo: quando è logico che un valore predefinito sia DateTime.MinValue? Mi rendo conto che è il * default * per DateTime, ma in realtà è un valore appropriato per il metodo dato? O forse se il valore non viene fornito, non dovrebbe essere semplicemente nullo? –
Ho usato 'DateTime.MinValue' ovunque durante l'acquisizione di valori da SQL che era null come' DateTime' non è annullabile. 'DateTime?' È. – MadBoy
questo è il punto in cui sto arrivando, ed è più applicabile qui. Se stai mappando su un database che supporta le date nullable, sembra appropriato usare date nullable nel tuo codice, e quindi per le date senza valori semplicemente essere nullo, così come sono nel tuo database. Solo un pensiero. –