„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > C# String -Vergleich: Wann sind String.equals () und == Equivalent?

C# String -Vergleich: Wann sind String.equals () und == Equivalent?

Gepostet am 2025-03-12
Durchsuche:200

String Comparison in C#: When Are `String.Equals()` and `==` Interchangeable?

c# verwirrt in String -Vergleich: sind die string.equals () Methode und die == Operator austauschbar?

In C#bringen String -Vergleiche manchmal unerwartete Ergebnisse. Eine gemeinsame Frage ist, ob die Methode string.equals () und die == gleicher Zeichenbetreiber genau gleich verhalten.

Betrachten Sie den folgenden Code -Snippet:

string s = "Category";
TreeViewItem tvi = new TreeViewItem();
tvi.Header = "Category";

Console.WriteLine(s == tvi.Header); // false
Console.WriteLine(s.Equals(tvi.Header)); // true
Console.WriteLine(s == tvi.Header.ToString()); // true
s

s und tvi.header tvi.header ] tvi, die == operator returns false , wob Dies wirft die Frage auf: Warum führen diese beiden Vergleichsmethoden unterschiedliche Ergebnisse? Schlüsselunterschiede zwischen string.equals ()

und

== Es gibt zwei grundlegende Unterschiede zwischen string.equals () und == Operatoren:

]

typenspezifische Implementierung: Der ==

Operator wird basierend auf der Kompilierungszeittyp des Objekts verglichen, während
    string.equals ()
  1. polymorph ist, was bedeutet, dass die Implementierung von der verglichenen Laufzeittyp des Laufzeit abhängt. null value processing: == operator wird keine Ausnahme beim Vergleich von Null -Referenzen werfen, während
  2. string.equals ()
  3. Wenn ein Parameter leer ist, wird ein nullReferencexception ausgeworfen. Beispiel für die Demonstration von Unterschieden ]]
  4. Um diese Unterschiede zu veranschaulichen, betrachten Sie den folgenden Code:

objekt x = new StringBuilder ("Hallo"). toString (); Objekt y = new StringBuilder ("Hallo"). toString (); if (x.equals (y)) // true if (x == y) // false

obwohl die

x
object x = new StringBuilder("hello").ToString();
object y = new StringBuilder("hello").ToString();

if (x.Equals(y)) // True

if (x == y) // False
] y

] der Operator gibt false zurück, weil er basierend auf der Kompilierungszeittyp des Objekts ( Object ) verglichen wird), die unterschiedlich sind. Um den richtigen Vergleich zu erhalten, muss das Objekt explizit in den entsprechenden Typ konvertiert werden (in diesem Fall string ). String xs = (String) x; String ys = (String) y; if (xs == ys) // true

abschließend
string xs = (string)x;
string ys = (string)y;

if (xs == ys) // True
string.equals ()

und == Operatoren werden normalerweise austauschbar verwendet, es ist wichtig, ihre Nuancen in der Implementierung und Nullwertverarbeitung zu verstehen. Um zuverlässige und konsistente String -Vergleiche sicherzustellen, wird die Methode

string.equals ()

im Allgemeinen empfohlen, insbesondere beim Vergleich verschiedener Arten von Objekten oder zur Behandlung leerer Referenzen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3