Heim >Backend-Entwicklung >C++ >C# String -Vergleich: Wann sollte ich `==` vs. `equals ()` verwenden?
und vergleiche ==
Equals()
c# bietet zwei Vergleichsstring -Operatoren:
. Obwohl sie in der Lage zu sein scheinen, tauschen zu können, zeigen sie einzigartige Verhaltensweisen und können zu unerwarteten Ergebnissen führen. Erforschen wir dieses Sprachproblem in einer bestimmten Szene. ==
Equals()
In einer Silverlight -Anwendung vergleicht eine Bedingung zwei String:
seltsamerweise
<code class="language-csharp">if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack")) { // 执行代码 } if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack") { // 执行代码 }</code>Vergleiche false und
Rufen Sie True zurück. Warum gibt es so einen Unterschied? ==
Equals()
Die Antwort liegt in der zugrunde liegenden Implementierung dieser Betreiber. Bei Verwendung mit einem Objektexpression wird
bewertet. Diese Methode vergleicht die Objektreferenz, nicht die ==
Inhalt System.Object.ReferenceEquals
. In diesem Fall werden die beiden Zeichenfolge in verschiedenen Speicherpositionen gespeichert, also kehren zu False zurück.
ReferenceEquals
hingegen ist eine virtuelle Methode, die durch abgeleiteten Typ umgeschrieben werden kann. Für String -Typen schreibt die Version des tatsächlichen
um, wodurch true zurückgegeben wird. Equals
Für den Vergleich der String -Zeichenfolge wird daher empfohlen, intuitiver zu verwenden, und es wird der inhaltsbasierte Vergleich durchführen.
Das obige ist der detaillierte Inhalt vonC# String -Vergleich: Wann sollte ich `==` vs. `equals ()` verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!