Was ist der beste Weg, Strings in Dart zu vergleichen? Die String-Klasse enthält keine equals
-Methode. Wird ==
empfohlen?
Zum Beispiel:
%Vor% Ja, ==
ist die Art zu testen, ob zwei Strings gleich sind (enthalten ausschließlich die gleiche Zeichenfolge). Die letzte Zeile Ihres Codes wird als true
ausgewertet.
Strings sind unveränderliche Objekte, dh Sie können sie erstellen, aber Sie können sie nicht ändern. Sie können natürlich eine neue Zeichenfolge aus anderen Zeichenfolgen erstellen, aber sobald sie erstellt wurde, ist der Inhalt der Zeichenfolge behoben.
Dies ist eine Optimierung, da zwei Strings mit denselben Zeichen in der gleichen Reihenfolge das gleiche Objekt sein können.
%Vor% Im Gegensatz zu Java können mit Dart Operatoren wie ==
überschrieben werden. Sie können also einen eigenen Test für diesen Operator definieren, um die Gleichheit zu prüfen. Sie können auch die identische Funktion verwenden, um zu prüfen, ob zwei Verweise auf dasselbe Objekt (das Äquivalent von ==
für Objekte in Java ).
Für String ist es ein bisschen besonders. Je nachdem, wie Sie die Zeichenfolge instanziieren, können Sie mit DartVM andere Ergebnisse erzielen:
%Vor% Wie Sie sehen können identical
gibt true
nur für den ersten Fall und ==
immer true
zurück. Aber das stimmt nicht immer. Wenn Sie diesen Code nach einer dart2js Kompilierung in Javascript ausführen, geben identical
und ==
immer true
zurück.
In den meisten Fällen möchten Sie die Werte von String nicht mit ihren Referenzen vergleichen, deshalb sollten Sie ==
verwenden.
Tags und Links dart