Junior
Cos'è la sicurezza nulla (null safety) in Dart?
sobes.tech AI
Risposta dell'AI
La sicurezza null è un sistema in Dart che aiuta a prevenire errori a runtime legati alla dereferenziazione di null. Il compilatore analizza il codice e determina se una variabile può contenere un valore null. Se una variabile è dichiarata come non consentendo null, il compilatore garantisce che non le verrà mai assegnato null.
Aspetti principali della sicurezza null:
- Tipo non nullo implicito: Per impostazione predefinita, i tipi non consentono null (non nullable).
// int non può essere null int count = 0; - Tipo che consente null: Per indicare esplicitamente che una variabile può essere null, si usa il punto interrogativo
?:// String? può essere null String? name; - Operatore
!(affermazione di non null): Usato per affermare che un'espressione che consente null non è null. Deve essere usato con cautela, poiché se è null, genera un'eccezione.String? nullableName = 'Flutter'; // Usando !, sapendo che nullableName non è null in questo contesto print(nullableName!.length); - Operatore
?(operatori null-aware): Usato per accedere in modo sicuro ai membri o chiamare metodi su espressioni che consentono null.?.(accesso null-aware):String? nullableString; // Se nullableString non è null, verrà chiamato length, altrimenti il risultato sarà null int? length = nullableString?.length;??(se null):String? serverName; // Se serverName non è null, si usa il suo valore, altrimenti 'Guest' String displayName = serverName ?? 'Guest';??=(se null, assegna):String? cache; // Se cache è null, le viene assegnato 'Loading...' cache ??= 'Loading...';
- Analisi del flusso: Il compilatore Dart analizza il codice e determina quando una variabile che consente null non è null in una parte specifica del codice, permettendo di usarla come non null.
String? greeting = getGreeting(); // Il compilatore sa che greeting non è null dopo questa verifica if (greeting != null) { print(greeting.toUpperCase()); // Può usare in modo sicuro toUpperCase() }
Vantaggi della sicurezza null:
- Riduzione degli errori: Previene NullReferenceException (o simili) a runtime.
- Migliore leggibilità: Indica esplicitamente se una variabile può essere null.
- Prestazioni aumentate: Il compilatore può eseguire ottimizzazioni sapendo quali variabili sono garantite non null.
La sicurezza null è stata introdotta in Dart 2.12.