2012-04-25 4 views
9

Eine einfache Frage:C# Abkürzung für Equals(), wenn beide args kann null

Ich möchte zwei Objekte mit Hilfe der virtuellen Equals() -Methode (nicht ==) vergleichen. Beide können null sein.

Sollte ich diese Litanei wiederholen:

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

} 

oder ist es eine elegantere Idiom für eine solche Situation?

Antwort

22

Yup:

if (object.Equals(left, right)) 

oder sogar ohne es offensichtlich zu machen, dass sie die statische Methode ruft: (. Mir persönlich gefällt die zusätzliche Klarheit obwohl)

if (Equals(left, right)) 

Die statische object.Equals Methode hat keine schrecklich gute Dokumentation, aber es tut genau das, was Sie wollen :)

+0

Ich musste mir das Beispiel ansehen um sicher zu gehen, dass es wirklich was macht :-) – Joey

+0

Ich bin gespannt, wieso wird das zweite Beispiel überhaupt kompiliert? –

+4

@KendallFrey: Ich verstehe die Frage nicht. Warum denkst du sollte es nicht kompilieren? –

Verwandte Themen