Verifica null, che è meglio? & # 8220; null == & # 8221; o & # 8220; == null & # 8221; [duplicare]

StackOverflow https://stackoverflow.com/questions/424842

  •  05-07-2019
  •  | 
  •  

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 #.

È stato utile?

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 ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top