Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 19482|Odpoveď: 2

[Zdroj] C# 8.0 môže byť nulovým referenčným typom

[Kopírovať odkaz]
Zverejnené 2022-3-26 16:40:21 | | | |
Pred C# 8.0 mohli byť všetky typy referencií null. Typy nulových referencií označujú súbor vlastností zavedených v C# 8.0, ktoré možno použiť preMinimalizujte pravdepodobnosť, že váš kód spôsobí hody počas behu。 Nulovateľné typy referencií obsahujú tri funkcie, ktoré pomáhajú vyhnúť sa týmto výnimkám, vrátane možnosti explicitne označiť typy referencií ako neplatné:

  • Optimalizovaná statická analýza prúdenia na zistenie, či je premenná nulová, ešte predtým, než sa prestane referencovať.
  • Atribúty, ktoré sa používajú na anotáciu API tak, aby Stream Analytics určovala nulový stav.
  • Anotácie premenných, ktoré môžu vývojári použiť na explicitné deklarovanie očakávaného nulového stavu premennej.


Analýza nulových stavov a anotácie premenných sú v existujúcich projektoch predvolene vypnuté, čo znamená, že všetky typy referencií sú stále nulovateľné. Od .NET 6 sú tieto funkcie predvolene zapnuté pre nové projekty.

Dokumentácia:Prihlásenie na hypertextový odkaz je viditeľné.

Čo znamená referenčný typ, ktorý môže byť null,Minimalizujte pravdepodobnosť, že vaša aplikácia počas behu hodí System.NullReferenceException

V projekte, ktorý vyvíjam s .NET 6, vytváram vlastnosť Name pre novú vlastnosť, ktorá ma zobrazí nasledujúce varovanie:

Pri ukončení konštruktora musí nenulovateľná vlastnosť "Name" obsahovať nenulovú hodnotu. Zvážme vyhlásenie vlastnosti ako môže byť nulová.


Aj keď je to varovanie, je to veľmi otravné! Ako opraviť toto varovanie? Predvolená hodnota pre priradenie je prázdny reťazec a kód je nasledovný:

To znamená, že keď vlastnosť nie je manuálne priradená, predvolenou hodnotou vlastnosti je prázdny reťazec.

Pri použití lokálnej premennej,Typ je šnúrka? môže tiež generovať varovania, ako je znázornené na obrázku nižšie:



Riešenie: zistite, či je premenná null, predtým než ju použijete, a ak áno, nespúšťajte kód nižšie, alebo si myslítePremenná nikdy nemôže byť nulová, sa dá použiťArgumentNullException.ThrowIfNull(assemblyFullName); Varovania môžu byť tiež odstránené! Inými slovami, ak je premenná nulová, počas behu vyhodí výnimku!

Zhrnutie: C# 8.0 túto funkciu zaviedol a osobne cítim, že je to na zlepšenie náročnosti vývojárov a vyhnutie sa niektorým nízkoúrovňovým chybám.

Pre viac metódových riešení, ktoré môžu byť nulové, pozrite sa:Prihlásenie na hypertextový odkaz je viditeľné.





Predchádzajúci:Vypýtajte sa na vzdialenú adresu Git aktuálneho projektu
Budúci:ASP.NET Core (dvanásť) front-end JS, CSS bundlovanie a kompresia
Zverejnené 2022-3-26 20:57:32 |
Naučte sa učiť
Zverejnené 28.3.2022 08:23:47 |
Poďte sa učiť
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com