Pirms C# 8.0 visi atsauces veidi varēja būt nulles. Nulles atsauču tipi attiecas uz C# 8.0 ieviesto līdzekļu kopu, ko var izmantotSamaziniet iespējamību, ka kods izraisīs izpildlaika metienus。 Anulējamie atsauču tipi ietver trīs līdzekļus, kas palīdz izvairīties no šiem izņēmumiem, tostarp iespēju skaidri atzīmēt atsauču tipus kā anulējamus:
- Optimizēta statiskās plūsmas analīze, lai noteiktu, vai mainīgais ir nulle, pirms tas nav atsauces.
- Atribūti, kas tiek izmantoti, lai anotētu API, lai Stream Analytics noteiktu nulles statusu.
- Mainīgo anotācijas, ko izstrādātāji var izmantot, lai skaidri deklarētu mainīgā paredzamo nulles stāvokli.
Nulles stāvokļa analīze un mainīgo anotācijas esošajiem projektiem pēc noklusējuma ir atspējotas, kas nozīmē, ka visi atsauces veidi joprojām ir nullējami. Sākot ar .NET 6, šie līdzekļi pēc noklusējuma ir iespējoti jauniem projektiem.
Dokumentācija:Hipersaites pieteikšanās ir redzama.
Kas ir jādara atsauces tipam, kas var būt nulleSamaziniet iespēju, ka lietojumprogramma izpildlaikā izmetīs System.NullReferenceException。
Projektā, ko izstrādāju ar .NET 6, es izveidoju rekvizītu Name jaunam rekvizītam, kas tiek aicināts ar šādu brīdinājumu:
Izejot no konstruktora, rekvizītam "Nosaukums" jābūt vērtībai, kas nav nulle. Apsveriet iespēju pasludināt īpašumu par spēkā neesošu.
Lai gan tas ir brīdinājums, tas ir ļoti kaitinoši! Kā novērst šo brīdinājumu? Piešķiršanas noklusējuma vērtība ir tukša virkne, un kods ir šāds:
Tas ir, ja rekvizīts nav piešķirts manuāli, rekvizīta noklusējuma vērtība ir tukša virkne.
Izmantojot lokālo mainīgo,Tips ir virkne? var arī radīt brīdinājumus, kā parādīts attēlā:
risinājumu, pirms tā lietošanas nosakiet, vai mainīgais ir nulle, un, ja tas ir, neizpildiet zemāk esošo kodu, vai arī jūs domājat, kaMainīgais nekad nevar būt nulle, var izmantotArgumentNullException.ThrowIfNull(assemblyFullName); Brīdinājumus var arī noņemt! Citiem vārdiem sakot, ja mainīgais ir nulle, tas radīs izņēmumu tieši izpildlaika laikā!
Kopsavilkums: C# 8.0 ieviesa šo funkciju, un es personīgi uzskatu, ka tas ir paredzēts, lai uzlabotu izstrādātāju stingrību un izvairītos no dažām zema līmeņa kļūdām.
Lai uzzinātu vairāk metožu risinājumu, kas var būt nulle, lūdzu, skatiet:Hipersaites pieteikšanās ir redzama.
|