Før C# 8.0 kunne alle referencetyper være null. Nullreferencetyper refererer til et sæt funktioner introduceret i C# 8.0, som kan bruges tilMinimer sandsynligheden for, at din kode forårsager runtime-throws。 Annullerbare referencetyper inkluderer tre funktioner for at undgå disse undtagelser, herunder muligheden for eksplicit at markere referencetyper som nullbare:
- Optimeret statisk flowanalyse for at afgøre, om en variabel er null, før den ikke refereres.
- Attributter, der bruges til at annotere API'et, så Stream Analytics bestemmer null-tilstanden.
- Variabelannoteringer, som udviklere kan bruge til eksplicit at erklære den forventede nul-tilstand for en variabel.
Nulltilstandsanalyse og variabelannoteringer er deaktiveret som standard for eksisterende projekter, hvilket betyder, at alle referencetyper stadig kan nulstilles. Fra og med .NET 6 er disse funktioner aktiveret som standard for nye projekter.
Dokumentation:Hyperlink-login er synlig.
Hvad en referencetype, der kan være null, skal gøre.Minimer risikoen for, at din applikation kaster et System.NullReferenceException under kørsel。
I et projekt, jeg udvikler med .NET 6, opretter jeg en Navnegenskab for en ny egenskab, der giver mig følgende advarsel:
Når man forlader konstruktøren, skal den ikke-nullbare egenskab "Navn" indeholde en ikke-nul værdi. Overvej at erklære egenskaben som kan være null.
Selvom det er en advarsel, er det meget irriterende! Hvordan løser man denne advarsel? Standardværdien for tilknytning er en tom streng, og koden er som følger:
Det vil sige, når egenskaben ikke tildeles manuelt, er standardværdien af egenskaben en tom streng.
Når man bruger en lokal variabel,Typen er snor? kan også generere advarsler, som vist i figuren nedenfor:
løsning, find ud af, om variablen er null, før du bruger den, og hvis den er, så lad være med at køre koden nedenfor, ellers tror duVariablen kan aldrig være nul, kan brugesArgumentNullUndtagelse.KastIfNull(assemblyFuldnavn); Advarsler kan også fjernes! Med andre ord, hvis variablen er null, vil den kaste en undtagelse direkte under kørsel!
Resumé: C# 8.0 introducerede denne funktion, og jeg føler personligt, at det er for at forbedre udviklernes stringens og undgå at lave nogle lavniveaufejl.
For flere metodeløsninger, der kan være null, henvises til:Hyperlink-login er synlig.
|