Heim > Backend-Entwicklung > C++ > C# String -Vergleich: Wann unterscheidet sich == von Equals ()?

C# String -Vergleich: Wann unterscheidet sich == von Equals ()?

DDD
Freigeben: 2025-02-01 18:56:08
Original
258 Leute haben es durchsucht

C# String Comparison: When Does == Differ From Equals()?

Der Unterschied zwischen Verständnis C# == und Equals ()

In C#können Sie diese Situation begegnen: Verwendung == Der vergleichende Vergleich der Komponente zum Vergleichen der beiden Zeichenfolge mit False und die Methode Equals () gibt true zurück. Um dieses Verhalten zu verstehen, müssen Sie die grundlegenden Unterschiede dieser Operatoren beherrschen.

Wenn für Objekte verwendet werden, ist der Wert von == Der Wert des Bedieners ist System.Object.Referencequals. Dies bedeutet, dass es überprüft, ob die beiden String -Objekte auf das gleiche Objekt im Speicher verweisen. Stattdessen ist Equals () eine virtuelle Methode, die durch benutzerdefinierte Typen (einschließlich String) neu geschrieben werden kann.

Verwenden Sie für die Zeichenfolge die Rewriting -Version von Equals (), um den tatsächlichen Inhalt der Zeichenfolge zu überprüfen. Wenn Sie also zwei Zeichenfolge mit demselben Zeichen vergleichen, aber in verschiedenen Speicherpositionen gespeichert sind, kehrt == zu False zurück, da sie im selben Objekt nicht referenziert werden und gleich () zu True zurückkehren, weil sie gleich sind.

Code Beispiel:

Betrachten Sie das folgende Codefragment:

In diesem Code vergleichen diese beiden Bedingungen die Inhaltseigenschaften des ausgewählten ListBoxItems mit dem String "Energy Attack". Obwohl die erste Bedingung von Equals () als wahr berechnet wird, kann die zweite Bedingung von == als Falsch berechnet werden, wenn die Inhaltseigenschaft ein neues String -Objekt ist. Dies liegt daran, dass die Identifizierung von == Operator Check -Identifizierung und zwei verschiedene String -Objekte mit demselben Wert unterschiedlich sind.

<code class="language-c#">if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // 执行代码
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // 执行代码
}</code>
Nach dem Login kopieren
wird daher beim Vergleich der gleichen Natur der Zeichenfolge in C#empfohlen, die Equals () -Methode zu verwenden (sie bewertet die gleiche Natur des Inhalts) anstelle von == (überprüft das Logo).

Das obige ist der detaillierte Inhalt vonC# String -Vergleich: Wann unterscheidet sich == von Equals ()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage