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>
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!