Voor C# 8.0 konden alle referentietypen null zijn. Nullreferentietypen verwijzen naar een set kenmerken die in C# 8.0 zijn geïntroduceerd en die gebruikt kunnen worden voorMinimaliseer de kans dat je code runtime throws veroorzaakt。 Nulbare referentietypen bevatten drie functies om deze uitzonderingen te helpen vermijden, waaronder de mogelijkheid om referentietypen expliciet als ongeldig te markeren:
- Geoptimaliseerde statische stromingsanalyse om te bepalen of een variabele nul is voordat deze wordt gerefereerd.
- Attributen die worden gebruikt om de API te annoteren zodat Stream Analytics de null-status bepaalt.
- Variabelenannotaties die ontwikkelaars kunnen gebruiken om expliciet de verwachte nultoestand van een variabele te declareren.
Null state analyse en variabelenannotaties zijn standaard uitgeschakeld voor bestaande projecten, wat betekent dat alle referentietypen nog steeds nul kunnen maken. Vanaf .NET 6 zijn deze functies standaard ingeschakeld voor nieuwe projecten.
Documentatie:De hyperlink-login is zichtbaar.
Wat een referentietype dat null kan zijn moet doenMinimaliseer de kans dat je applicatie een System.NullReferenceException tijdens runtime gooit。
In een project dat ik ontwikkel met .NET 6, maak ik een naam-eigenschap aan voor een nieuwe eigenschap die mij de volgende waarschuwing geeft:
Bij het verlaten van de constructor moet de niet-nullbare eigenschap "Naam" een niet-nulle waarde bevatten. Overweeg om de eigenschap als nul te verklaren.
Hoewel het een waarschuwing is, is het erg irritant! Hoe los je deze waarschuwing op? De standaardwaarde voor toewijzing is een lege string, en de code is als volgt:
Dat wil zeggen, wanneer de eigenschap niet handmatig wordt toegewezen, is de standaardwaarde van de eigenschap een lege string.
Wanneer een lokale variabele wordt gebruikt,Het type is touw? kan ook waarschuwingen genereren, zoals getoond in de onderstaande figuur:
oplossing: bepaal of de variabele null is voordat je hem gebruikt, en als dat zo is, voer dan de onderstaande code niet uit, anders denk je dat je denktDe variabele kan nooit nul zijn, kan worden gebruiktArgumentNullUitzondering.GooiAlsNull(assemblyVolNaam); Waarschuwingen kunnen ook worden verwijderd! Met andere woorden, als de variabele null is, zal er direct tijdens runtime een uitzondering worden gegooid!
Samenvatting: C# 8.0 introduceerde deze functie, en ik denk persoonlijk dat het bedoeld is om de nauwkeurigheid van ontwikkelaars te verbeteren en te voorkomen dat er kleine fouten worden gemaakt.
Voor meer methodoplossingen die null kunnen zijn, zie alstublieft:De hyperlink-login is zichtbaar.
|