Char.Equals vs Object.Equals - ReSharper schlägt vor, dass ich Object.Equals verwenden soll. Sollte ich?

8

Grundsätzlich frage ich mich, ob ich ReSharper in diesem Fall hören soll ...

Sie würden denken, dass man im Vergleich zu Zeichen Char.Equals (char) verwenden sollte, da es das Unboxing vermeidet, aber Resharper schlägt vor, Object.Equals (obj) zu verwenden. Vielleicht vermisse ich hier etwas?

%Vor%

Ich vermute, dass es eine DependencyProperty-Unterstützung gibt?

    
m-y 27.12.2011, 22:05
quelle

2 Antworten

13

Es ist unmöglich, static members zu überschreiben - Object.Equals() ist ein statisches Mitglied und Char kann es nicht überschreiben, obwohl Sie es aufrufen können der Char-Typ (die Parameter sind immer noch vom Typ Object )

Daher macht es keinen Unterschied, ob Sie

aufrufen %Vor%

oder

%Vor%

da das Boxen in jedem Fall stattfindet.

Um dies zu vermeiden, verwenden Sie die Instanzmethode, die in Char :

überschrieben wird %Vor%     
Adam 27.12.2011, 22:22
quelle
5

Char.Equals(control.SpecialChar, DEFAULT_CHAR) ist ein Aufruf von Object.Equals(object, object) , also ist hier Nachkorrigieren korrekt.

Ich würde vorschlagen, zu verwenden %Code% oder nur control.SpecialChar.Equals(DEFAULT_CHAR)

    
the_joric 27.12.2011 22:21
quelle