Iki C# 8.0 visi nuorodų tipai galėjo būti nuliniai. Nulinių nuorodų tipai nurodo C# 8.0 įdiegtų funkcijų rinkinį, kurį galima naudotiSumažinkite tikimybę, kad jūsų kodas sukels vykdymo laiko metimus。 Nuliniai nuorodų tipai apima tris funkcijas, padedančias išvengti šių išimčių, įskaitant galimybę aiškiai pažymėti nuorodų tipus kaip negaliojančius:
- Optimizuota statinio srauto analizė, siekiant nustatyti, ar kintamasis yra nulinis, kol jis nebus nurodytas.
- Atributai, naudojami API komentuoti, kad "Stream Analytics" nustatytų nulinę būseną.
- Kintamųjų komentarai, kuriuos kūrėjai gali naudoti norėdami aiškiai deklaruoti numatomą nulinę kintamojo būseną.
Nulinės būsenos analizė ir kintamųjų komentarai pagal numatytuosius nustatymus yra išjungti esamuose projektuose, o tai reiškia, kad visi nuorodų tipai vis dar yra nuliniai. Pradedant nuo .NET 6, šios funkcijos pagal numatytuosius nustatymus įjungiamos naujiems projektams.
Dokumentacija:Hipersaito prisijungimas matomas.
Ką turi daryti nuorodos tipas, kuris gali būti nulinisSumažinkite tikimybę, kad jūsų programa vykdymo metu pateiks System.NullReferenceException。
Projekte, kurį kuriu su .NET 6, sukuriu naujos ypatybės ypatybę Pavadinimas, kuri paragina mane su tokiu įspėjimu:
Išeinant iš konstruktoriaus, nenulinėje ypatybėje "Pavadinimas" turi būti ne nulinė reikšmė. Apsvarstykite galimybę paskelbti nuosavybę negaliojančia.
Nors tai įspėjimas, tai labai erzina! Kaip ištaisyti šį įspėjimą? Numatytoji priskyrimo reikšmė yra tuščia eilutė, o kodas yra toks:
Tai yra, kai ypatybė nėra priskirta rankiniu būdu, numatytoji ypatybės reikšmė yra tuščia eilutė.
Kai naudojate vietinį kintamąjį,Tipas yra eilutė? taip pat gali generuoti įspėjimus, kaip parodyta toliau pateiktame paveikslėlyje:
sprendimą, prieš naudodami nustatykite, ar kintamasis yra nulinis, o jei taip, nevykdykite žemiau esančio kodo, arba manote, kadKintamasis niekada negali būti nulinis, gali būti naudojamasArgumentNullException.ThrowIfNull(assemblyFullName); Įspėjimai taip pat gali būti pašalinti! Kitaip tariant, jei kintamasis yra nulinis, jis pateiks išimtį tiesiai vykdymo metu!
Santrauka: C# 8.0 pristatė šią funkciją, ir aš asmeniškai manau, kad ji skirta pagerinti kūrėjų griežtumą ir išvengti žemo lygio klaidų.
Daugiau metodų sprendimų, kurie gali būti nuliniai, ieškokite:Hipersaito prisijungimas matomas.
|