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 ()
==
Es gibt zwei grundlegende Unterschiede zwischen
string.equals () und
== Operatoren:
typenspezifische Implementierung: Der
==
null value processing:
==
operator wird keine Ausnahme beim Vergleich von Null -Referenzen werfen, während
Beispiel für die Demonstration von Unterschieden
]]
objekt x = new StringBuilder ("Hallo"). toString (); Objekt y = new StringBuilder ("Hallo"). toString (); if (x.equals (y)) // true if (x == y) // false
obwohl die
xobject 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
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.
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