See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 19482|Vastuse: 2

[Allikas] C# 8.0 võib olla nullviitetüüp

[Kopeeri link]
Postitatud 2022-3-26 16:40:21 | | | |
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.





Eelmine:Küsi praeguse projekti Giti kaugaadressi kohta
Järgmine:ASP.NET Core (kaksteist) front-end JS, CSS-i komplekt ja kompressioon
Postitatud 2022-3-26 20:57:32 |
Õpi õppima
Postitatud 2022-3-28 08:23:47 |
Tule ja õpi
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com