Der beste und schnellste Weg, um zu überprüfen, ob ein Objekt null ist [duplizieren]

8

Ich sehe oft in Quellcodes die Verwendung von if (object.ReferenceEquals (myObject, null)) , um zu überprüfen, ob myObject null ist und nicht if (myObject == null) stark> was mir vertraut ist.

Gibt es einen bestimmten Grund (wie Geschwindigkeit, Lesbarkeit usw.), um den ersten Weg anstelle des zweiten zu benutzen? Welchen benutzen Sie?

Vielen Dank im Voraus.

    
Dummy01 10.12.2010, 10:57
quelle

6 Antworten

5

Wenn Sie ReferenceEquals verwenden, stellen Sie sicher, dass keine spezielle Behandlung (zB überladener Operator) angewendet wird. Dies führt auch zu anderen Ergebnissen, wenn sie mit ungebundenen Generika verwendet werden.

    
Lucero 10.12.2010, 11:02
quelle
4

Einfache Dinge sind normalerweise die effizientesten: (myObject == null) ist leistungsfähiger

Sehen Sie sich diesen Artikel an

    
Mehdi LAMRANI 10.12.2010 11:05
quelle
3
Jan 10.12.2010 11:03
quelle
1

Der Operator == kann von Klassenimplementierungen überladen werden, daher wird möglicherweise kein Referenzvergleich durchgeführt (obwohl dies wahrscheinlich mit null s der Fall sein sollte). object.ReferenceEquals kann nicht, also macht es immer einen Referenzvergleich.

Prost Matthias

    
Matthias Meid 10.12.2010 11:03
quelle
1

Die ReferenceEquals-Methode kann nicht überschrieben werden, sodass Sie immer sicher sein können, dass der Vergleich die Objektreferenzen vergleicht und nicht an eine Überschreibung der Equals-Methode übergeben wird.

    
Lazarus 10.12.2010 11:04
quelle
1

Sie haben normalerweise den gleichen Effekt, obwohl sie sich auf verschiedene Dinge zusammenstellen. if (myObject == null) ergibt einen ceq opcode, den ich zu einem schnelleren Code kompilieren würde. object.ReferenceEquals ist ein Methodenaufruf wie jeder andere.

Sie sind anders, wenn myObject eine operator= Methode hat; Wenn dies der Fall ist, ruft Ihr Code diese Methode auf, anstatt ceq zu verwenden. operator= kann dann tun, was es will.

Immer if (myObject == null) , es sei denn, Sie haben einen Grund, dies nicht zu tun.

    
Tim Robinson 10.12.2010 11:06
quelle

Tags und Links