Wie erfolgt der Vergleich mit dem Operator identical in Dart?
sobes.tech KI
Antwort von AI
Die Funktion identical(a, b) in Dart gibt true zurück, wenn ihre Argumente a und b dasselbe Objekt im Speicher sind. Andernfalls gibt sie false zurück.
Dies unterscheidet sich von der Verwendung des Operators ==, der von Klassen überschrieben werden kann, um logische Gleichheit zu bestimmen, anstatt die Identität der Objekte.
Beispiele:
// Objekt A
var list1 = [1, 2, 3];
// Objekt B (ein anderes Objekt im Speicher)
var list2 = [1, 2, 3];
print(identical(list1, list2)); // false (unterschiedliche Objekte)
print(list1 == list2); // true (logisch gleich, wenn List == überschreibt)
// Objekt C, Referenz auf dasselbe Objekt wie list1
var list3 = list1;
print(identical(list1, list3)); // true (verweisen auf dasselbe Objekt)
Für primitive Typen (Zahlen, Strings, Booleans, null), die unveränderlich sind, verhält sich identical oft wie ==, da Dart Instanzen unveränderlicher Werte zwischenspeichern oder wiederverwenden kann.
var a = 10;
var b = 10;
print(identical(a, b)); // true (vermutlich verwendet Dart dieselbe Instanz für den Wert 10)
var s1 = "hello";
var s2 = "hello";
print(identical(s1, s2)); // true (Dart cached String-Literale)
Der Hauptanwendungsfall von identical ist zu prüfen, ob eine Referenz genau auf dieselbe Instanz eines Objekts zeigt, was bei Optimierungen, Caching oder bei der Arbeit mit unveränderlichen Objekten nützlich ist.