Enne C# 8.0 võisid kõik viitetüübid olla nullid. Nullviite tüübid viitavad C# 8.0-s tutvustatud funktsioonide kogumile, mida saab kasutadaVähenda tõenäosust, et su kood põhjustab jooksuajal viskeid。 Nullitavad viitetüübid sisaldavad kolme omadust, mis aitavad neid erandeid vältida, sealhulgas võimalust märkida viitetüübid nullitavateks:
- Optimeeritud staatilise voolu analüüs, et määrata, kas muutuja on null enne, kui seda ei viitata.
- Atribuudid, mida kasutatakse API annoteerimiseks, et Stream Analytics määraks nulloleku.
- Muutujate annotatsioonid, mida arendajad saavad kasutada muutuja oodatava nulloleku selgeks deklareerimiseks.
Nulloleku analüüs ja muutujate annotatsioonid on olemasolevate projektide puhul vaikimisi keelatud, mis tähendab, et kõik viitetüübid on endiselt nullitatavad. Alates .NET 6-st on need funktsioonid uute projektide puhul vaikimisi lubatud.
Dokumentatsioon:Hüperlingi sisselogimine on nähtav.
Milline viitetüüp, mis võib olla null, on tehaVähenda võimalust, et sinu rakendus käivitab System.NullReferenceExceptioni käitusajal。
Projektis, mida arendan .NET 6-ga, loon uue omaduse jaoks nime omaduse, mis annab mulle järgmise hoiatuse:
Konstruktorist väljudes peab mittenullitav omadus "Nimi" sisaldama mittenullväärtust. Kaalu vara deklareerimist kui nulli.
Kuigi see on hoiatus, on see väga tüütu! Kuidas seda hoiatust parandada? Vaikimisi väärtus määramiseks on tühi string ja kood on järgmine:
See tähendab, et kui omadust ei määrata käsitsi, on omaduse vaikimisi väärtus tühi string.
Kui kasutada lokaalset muutujat,Tüüp on nöör? võib tekitada ka hoiatusi, nagu alloleval joonisel näidatud:
Selgita välja, kas muutuja on null enne selle kasutamist, ja kui on, ära käivita allolevat koodi, muidu arvad, etMuutuja ei saa kunagi olla null, võib kasutadaArgumentNullException.ThrowIfNull(assemblyFullName); Hoiatusi saab samuti eemaldada! Teisisõnu, kui muutuja on null, viskab ta erindi otse käitusajal!
Kokkuvõte: C# 8.0 tõi selle funktsiooni sisse ja mina isiklikult arvan, et see on arendajate ranguse parandamiseks ja madala taseme vigade vältimiseks.
Lisameetodite lahenduste kohta, mis võivad olla nullid, palun vaata:Hüperlingi sisselogimine on nähtav.
|