Pred C# 8.0 so lahko vsi tipi referenc bili ničelni. Ničelni tipi referenc se nanašajo na nabor funkcij, uvedenih v C# 8.0 in jih je mogoče uporabiti zaZmanjšajte verjetnost, da bo vaša koda povzročila premike med izvajanjem。 Ničelni tipi referenc vključujejo tri funkcije, ki pomagajo preprečiti te izjeme, vključno z možnostjo eksplicitnega označevanja vrst referenc kot neveljavnih:
- Optimizirana analiza statičnega toka za ugotavljanje, ali je spremenljivka ničelna, preden je nereferencirana.
- Atributi, ki se uporabljajo za označevanje API-ja, da analitika tokov določi ničelno stanje.
- Oznake spremenljivk, ki jih razvijalci lahko uporabijo za eksplicitno deklaracijo pričakovanega ničelnega stanja spremenljivke.
Analiza ničelnih stanj in označevanje spremenljivk sta privzeto onemogočeni za obstoječe projekte, kar pomeni, da so vse vrste referenc še vedno ničljive. Od .NET 6 naprej so te funkcije privzeto omogočene za nove projekte.
Dokumentacija:Prijava do hiperpovezave je vidna.
Kaj naj naredi referenčni tip, ki je lahko ničlen,Zmanjšajte možnost, da bo vaša aplikacija med izvajanjem sprožila System.NullReferenceException。
V projektu, ki ga razvijam z .NET 6, ustvarim lastnost Name za novo lastnost, ki me opozori z naslednjim opozorilom:
Ob izhodu iz konstruktorja mora neničljiva lastnost "Name" vsebovati ne-ničelno vrednost. Razmislimo, da lastnost razglasimo kot je lahko ničla.
Čeprav je to opozorilo, je zelo nadležno! Kako popraviti to opozorilo? Privzeta vrednost za dodelitev je prazen niz, koda pa je naslednja:
To pomeni, da ko lastnost ni ročno dodeljena, je privzeta vrednost lastnosti prazen niz.
Pri uporabi lokalne spremenljivke,Vrsta je vrvica? lahko prav tako generira opozorila, kot je prikazano na spodnji sliki:
Rešitev, ugotovite, ali je spremenljivka ničelna, preden jo uporabite, in če je, ne izvajajte spodnje kode ali mislite, daSpremenljivka nikoli ne more biti ničelna, se lahko uporabiArgumentNullException.ThrowIfNull(assemblyFullName); Opozorila je mogoče tudi odstraniti! Z drugimi besedami, če je spremenljivka ničelna, bo med izvajanjem sprožila izjemo!
Povzetek: C# 8.0 je uvedel to funkcijo in osebno menim, da je namenjena izboljšanju zahtevnosti razvijalcev ter preprečevanju manjših napak.
Za več metodnih rešitev, ki so lahko ničelne, si oglejte:Prijava do hiperpovezave je vidna.
|