2012-04-25 7 views
9

Una semplice domanda:C# scorciatoia per Equals() quando entrambi i args può essere nullo

voglio mettere a confronto due oggetti utilizzando i Equals virtuali() il metodo (non ==). Entrambi possono essere nulli.

Devo ripetere questa litania:

if ((left == null && right == null) || (left != null && left.Equals(right)) { 

} 

o c'è un più elegante linguaggio per tale situazione?

risposta

22

Yup:

if (object.Equals(left, right)) 

o anche senza che lo rende evidente che si sta chiamando il metodo statico: (. Personalmente preferisco la chiarezza in più però)

if (Equals(left, right)) 

La statica object.Equals il metodo non ha una documentazione terribilmente buona, ma fa esattamente quello che vuoi :)

+0

Ho dovuto guardare l'esempio per essere sicuro che faccia davvero ciò che è voluto :-) – Joey

+0

Sono curioso, perché il secondo esempio viene compilato? –

+4

@ KendallFrey: Non capisco la domanda. Perché pensi che dovrebbe * non * compilare? –