C# 8.0 előtt minden referenciatípus null lehetett. A null referenciatípusok a C# 8.0-ban bevezetett olyan funkciók halmazára utalnak, amelyek a következőképpen használhatókMinimalizáld annak valószínűségét, hogy a kódod futtatási hibákat okoz。 A nullable referenciatípusok három funkciót tartalmaznak, amelyek segítenek elkerülni ezeket a kivételeket, beleértve a hivatkozási típusok explicit jelölését nullíthatóként:
- Optimalizált statikus áramláselemzés annak megállapítására, hogy egy változó null-e, mielőtt nem hivatkoznak rá.
- Attribútumok, amelyeket az API annotálásához használnak, hogy a Stream Analytics meghatározza a null állapotot.
- Változó annotációk, amelyeket a fejlesztők használhatnak arra, hogy explicit módon kijelentsék egy változó várható nullállapotát.
A nullállapot-elemzés és a változó annotációk alapértelmezés szerint le van tiltva a meglévő projektek esetén, ami azt jelenti, hogy minden referenciatípus továbbra is nullálható. A .NET 6-tól kezdődően ezek a funkciók alapértelmezetten engedélyezve vannak új projekteknél.
Dokumentáció:A hiperlink bejelentkezés látható.
Milyen referenciatípus, amely null lehet, mit kell tenniMinimalizáld annak esélyét, hogy az alkalmazásod futásidőben System.NullReferenceException-t küldjön。
Egy .NET 6-tal fejleszthető projektben létrehozok egy Name tulajdonságot egy új tulajdonsághoz, amely a következő figyelmeztetést adja:
A konstruktorból való kilépéskor a nem nullable "Name" tulajdonságnak nem null értéket kell tartalmaznia. Fontold meg az ingatlan kinyilvánítását, mint hogy nulla lehet.
Bár ez figyelmeztetés, nagyon idegesítő! Hogyan lehet ezt a figyelmeztetést orvosolni? Az alapértelmezett érték az hozzárendeléshez egy üres string, és a kód a következő:
Vagyis ha a tulajdonság nincs kézzel hozzárendelve, akkor a tulajdonság alapértelmezett értéke egy üres string.
Helyi változó használatakor,A típus a zsinór? figyelmeztetéseket is generálhat, ahogy az alábbi ábrán látható:
A megoldás, a használat előtt megállapítsák, hogy null-e a változó, és ha igen, ne hajtsd le az alábbi kódot, különben azt gondolod,A változó soha nem lehet null, használhatóArgumentNullException.ThrowIfNull(assemblyFullName); A figyelmeztetések is eltávolíthatók! Más szóval, ha a változó null, akkor közvetlenül a futás alatt kivételt fog adni!
Összefoglaló: A C# 8.0 vezette be ezt a funkciót, és személy szerint úgy érzem, hogy ez a fejlesztők szigorúságának javítására és az alacsony szintű hibák elkerülésére szolgál.
További null típusú módszermegoldásokért kérjük, lásd:A hiperlink bejelentkezés látható.
|