Verifica null, che è meglio? & # 8220; null == & # 8221; o & # 8220; == null & # 8221; [duplicare]
Domanda
Dupe: Differenza nulla
Una vita fa mi sono imbattuto in un articolo che spiegava che quanto segue non era uguale (in c #):
if (o == null) {}
if (null == o) {}
L'articolo spiegava che quest'ultimo era preferito perché portava a un test più accurato. Da allora ho programmato così. Ora che capisco molto di più stavo cercando l'articolo, o un altro simile, per vedere quali fossero i risultati esatti, ma non riesco a trovare nulla sull'argomento.
Pensieri? C'è una differenza? A prima vista direi di no. Ma chissà cosa succede nelle viscere della compilazione di IL e C #.
Soluzione
è una vecchia abitudine impedirti di digitare if (o = null)
. se (null = o) è un errore di sintassi. in qualche modo inutile in C #, perché i valori null non sono mai forzati in valori booleani.
Altri suggerimenti
Quest'ultimo è un passaggio dai giorni C / C ++, in cui è stato possibile assegnare accidentalmente un valore invece di confrontare. C # non ti permetterà di farlo, quindi / o è accettabile (ma trovo che il primo sia più leggibile).
In c # non c'è differenza. È una vecchia abitudine degli sviluppatori C / C ++ evitare un bug comune in cui questa è sintassi corretta:
if(o = null)
In C # che non si sarebbe compilato, ma in C e C ++ sarebbe, lasciandoti con un bug piuttosto brutto. Pertanto, molte persone si sono abituate a fare
if(null == o)
Non pertinente per C #, proviene da C. Vedi questa domanda per una discussione .
Lavoro con Java ..e ho l'abitudine di avere costanti su LHS per tutti i confronti commutativi.
"name".equals(name)
null == obj
"55".compareTo(numString)
ecc. Solo evitando NullPointerExceptions inutili ...