Ecco qualche esempio di codice:Perché questo è un confronto valido
static DateTime time;
if (time == null)
{
/* do something */
}
Dal DateTime
non può essere nullo, perché questo codice compilato?
Edit: Il problema non è solo che questo codice restituisce sempre falso, ma perché qualcosa come DateTime
quali è mai nulla è consentito in un tale confronto.
Credo sia perché esiste una conversione implicita da "DateTime' a" DateTime? ". Tuttavia, questa conversione non è verificata in modo coerente ... –
(O almeno non è stato controllato in modo coerente ... Sono sicuro che c'erano alcune stranezze intorno ad esso, ma non riesco a riprodurle con Roslyn.) –