Junior
Mi az a null biztonság (null safety) Dartben?
sobes.tech MI
Válasz az MI-től
A null biztonság egy rendszer Dartban, amely segít megelőzni a null érték dereferálásával kapcsolatos futásidejű hibákat. A fordító elemzi a kódot, és meghatározza, hogy egy változó tartalmazhat-e null értéket. Ha egy változót úgy deklarálnak, hogy nem engedélyezi a null-t, a fordító garantálja, hogy soha nem fog null értéket kapni.
A null biztonság főbb aspektusai:
- Implicit nem null típus: Alapértelmezés szerint a típusok nem engedélyezik a null-t (non-nullable).
// int nem lehet null int count = 0; - Null-t engedélyező típus: Az explicit jelzéshez, hogy egy változó null lehet, a kérdőjel
?kerül:// String? null lehet String? name; !operátor (nem null megerősítése): Használható arra, hogy megerősítse, hogy egy null-t engedélyező kifejezés nem null. Óvatosan kell használni, mert null esetén kivételt dob.String? nullableName = 'Flutter'; // Használjuk !, tudva, hogy nullableName nem null ebben a kontextusban print(nullableName!.length);?operátor (null-aware operátorok): Biztonságos hozzáférést tesz lehetővé null-t engedélyező kifejezések tagjaihoz vagy metódushívásaihoz.?.(null-aware hozzáférés):String? nullableString; // Ha nullableString nem null, meghívódik a length, különben null lesz az eredmény int? length = nullableString?.length;??(ha null):String? serverName; // Ha serverName nem null, az értékét használja, különben 'Guest' String displayName = serverName ?? 'Guest';??=(ha null, hozzárendelés):String? cache; // Ha cache null, 'Loading...' értéket kap cache ??= 'Loading...';
- Áramlás elemzés: A Dart fordító elemzi a kódot, és meghatározza, mikor nem null egy null-t engedélyező változó egy adott kódrészben, lehetővé téve, hogy nem null-ként használjuk.
String? greeting = getGreeting(); // A fordító tudja, hogy greeting nem null a vizsgálat után if (greeting != null) { print(greeting.toUpperCase()); // Biztonságosan használható a toUpperCase() }
A null biztonság előnyei:
- Hibák csökkentése: Megelőzi a NullReferenceException-t (vagy hasonlókat) futásidőben.
- Olvashatóság javítása: Egyértelműen jelzi, hogy egy változó null lehet-e.
- Teljesítmény növelése: A fordító optimalizálásokat végezhet, tudva, mely változók garantáltan nem null-ok.
A null biztonság a Dart 2.12 verziójában került bevezetésre.