Aiuta a pensare a cosa questa condizione di avviso sta cercando di prevenire. Il suo scopo è quello di avvisare che non si stanno confrontando le due variabili che si desidera confrontare, ad esempio a causa di un errore di battitura (ad esempio foo == foo
quando si intende foo == boo
o foo == fpp
) o due valori letterali (ad esempio 1 == 1
).
(Naturalmente, confrontando due valori letterali presenta un problema differente -. Il risultato sarà sempre lo stesso, e deve solo essere semplificato in true
o false
nel codice comunque)
null == null
non è un caso di questo potenziale problema. Se stai nominando una variabile qualcosa vicino a "null" e poi scrivendo "null" per errore, hai un problema completamente diverso a cui nessun compilatore può intuire.
fonte
2015-11-20 20:34:04
null sarà sempre nullo, ma poiché 'null' identifica un oggetto (che non esiste, ma è ancora un oggetto), deve essere confrontato. – Laurens
@Laurens ma poi, perché un avviso per a == a? (un essere un oggetto nullo) – fxm
Perché hai inizializzato 'a'. Non hai detto al compilatore che cosa era "null" – Laurens