Före C# 8.0 kunde alla referenstyper vara null. Nollreferenstyper avser en uppsättning funktioner som introducerades i C# 8.0 och som kan användas förMinimera sannolikheten att din kod orsakar runtime-throws。 Nullbara referenstyper inkluderar tre funktioner för att undvika dessa undantag, inklusive möjligheten att explicit markera referenstyper som nullbara:
- Optimerad statisk flödesanalys för att avgöra om en variabel är null innan den är orefererad.
- Attribut som används för att annotera API:et så att Stream Analytics bestämmer null-tillståndet.
- Variabelannotationer som utvecklare kan använda för att uttryckligen deklarera det förväntade nolltillståndet för en variabel.
Nullstatusanalys och variabelannotationer är inaktiverade som standard för befintliga projekt, vilket innebär att alla referenstyper fortfarande kan nulleras. Från och med .NET 6 är dessa funktioner aktiverade som standard för nya projekt.
Dokumentation:Inloggningen med hyperlänken är synlig.
Vad en referenstyp som kan vara null ska göraMinimera risken att din applikation kastar en System.NullReferenceException vid körning。
I ett projekt jag utvecklar med .NET 6 skapar jag en Name-egenskap för en ny egenskap som ger mig följande varning:
När man lämnar konstruktorn måste den icke-nullbara egenskapen "Name" innehålla ett icke-nullvärde. Överväg att förklara egenskapen som kan vara null.
Även om det är en varning, är det väldigt irriterande! Hur åtgärdar man denna varning? Standardvärdet för tilldelning är en tom sträng, och koden är följande:
Det vill säga, när egenskapen inte tilldelas manuellt, är standardvärdet för egenskapen en tom sträng.
När man använder en lokal variabel,Typen är snöre? kan också generera varningar, som visas i figuren nedan:
lösning, avgör om variabeln är null innan du använder den, och om den är det, exekvera inte koden nedan, annars tror duVariabeln kan aldrig vara null, kan användasArgumentNullException.ThrowIfNull(assemblyFullName); Varningar kan också tas bort! Med andra ord, om variabeln är null, kommer den att kasta ett undantag direkt under körning!
Sammanfattning: C# 8.0 introducerade denna funktion, och jag känner personligen att den är för att förbättra utvecklarnas stringens och undvika att göra några lågnivåmisstag.
För fler metodlösningar som kan vara null, vänligen se:Inloggningen med hyperlänken är synlig.
|