Junior
Was ist Null Safety in Dart?
sobes.tech KI
Antwort von AI
Null-Sicherheit ist ein System in Dart, das hilft, Laufzeitfehler im Zusammenhang mit Null-Dereferenzierungen zu vermeiden. Der Compiler analysiert den Code und bestimmt, ob eine Variable einen Null-Wert enthalten kann. Wenn eine Variable als nicht null erlaubt deklariert ist, garantiert der Compiler, dass ihr niemals null zugewiesen wird.
Hauptaspekte der Null-Sicherheit:
- Impliziter nicht-nullbarer Typ: Standardmäßig erlauben Typen kein null (nicht nullable).
// int kann nicht null sein int count = 0; - Null-erlaubter Typ: Um explizit anzugeben, dass eine Variable null sein kann, wird das Fragezeichen
?verwendet:// String? kann null sein String? name; - Operator
!(Nicht-Null-Aussage): Wird verwendet, um zu bestätigen, dass ein null-erlaubter Ausdruck nicht null ist. Sollte vorsichtig verwendet werden, da bei null eine Ausnahme ausgelöst wird.String? nullableName = 'Flutter'; // Wir verwenden !, in dem Wissen, dass nullableName in diesem Kontext nicht null ist print(nullableName!.length); - Operator
?(Null-sichere Operatoren): Wird verwendet, um sicher auf Mitglieder zuzugreifen oder Methoden bei null-erlaubten Ausdrücken aufzurufen.?.(Null-sicherer Zugriff):String? nullableString; // Wenn nullableString nicht null ist, wird length aufgerufen, sonst ist das Ergebnis null int? length = nullableString?.length;??(falls null):String? serverName; // Wenn serverName nicht null ist, wird sein Wert verwendet, sonst 'Guest' String displayName = serverName ?? 'Guest';??=(falls null zuweisen):String? cache; // Wenn cache null ist, wird 'Loading...' zugewiesen cache ??= 'Loading...';
- Flussanalyse: Der Dart-Compiler analysiert den Code und bestimmt, wann eine null-erlaubte Variable garantiert nicht null ist, was die Verwendung als nicht nullbar erlaubt.
String? greeting = getGreeting(); // Der Compiler weiß, dass greeting nach dieser Überprüfung nicht null ist if (greeting != null) { print(greeting.toUpperCase()); // Sicheres Verwenden von toUpperCase() }
Vorteile der Null-Sicherheit:
- Fehlerreduktion: Verhindert NullReferenceException (oder ähnliche) zur Laufzeit.
- Verbesserte Lesbarkeit: Gibt explizit an, ob eine Variable null sein kann.
- Erhöhte Leistung: Der Compiler kann Optimierungen vornehmen, wenn er weiß, welche Variablen garantiert nicht null sind.
Die Null-Sicherheit wurde in Dart 2.12 eingeführt.