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.
Einfache Dinge sind normalerweise die effizientesten:
(myObject == null)
ist leistungsfähiger
Sehen Sie sich diesen Artikel an
Schauen Sie sich diesen interessanten Artikel an
Leistungstipp: Bevorzugt (((Objekt) x) == null) für Object.ReferenceEquals (x, null)
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
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.