Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 19482|Odpověď: 2

[Zdroj] C# 8.0 může být nulovým referenčním typem

[Kopírovat odkaz]
Zveřejněno 26. 3. 2022 16:40:21 | | | |
Před C# 8.0 mohly být všechny typy referencí null. Typy nulových referencí označují sadu funkcí zavedených v C# 8.0, které lze použít proMinimalizujte pravděpodobnost, že váš kód způsobí runtime thry。 Nullable reference types zahrnují tři funkce, které pomáhají těmto výjimkám předejít, včetně možnosti explicitně označit typy referencí jako nullable:

  • Optimalizovaná statická analýza proudění pro určení, zda je proměnná nulová, než je odreferencena.
  • Atributy používané k anotaci API, aby Stream Analytics určovala nulový stav.
  • Anotace proměnných, které mohou vývojáři použít k explicitnímu prohlášení očekávaného nulového stavu proměnné.


Analýza nulových stavů a anotace proměnných jsou ve výchozím nastavení zakázány u stávajících projektů, což znamená, že všechny typy referencí jsou stále nulovatelné. Od .NET 6 jsou tyto funkce ve výchozím nastavení povoleny pro nové projekty.

Dokumentace:Přihlášení k hypertextovému odkazu je viditelné.

Co znamená referenční typ, který může být null,Minimalizujte pravděpodobnost, že vaše aplikace během běhu hodí System.NullReferenceException

V projektu, který vyvíjím s .NET 6, vytvářím vlastnost Name pro novou vlastnost, která mě vyzve s následujícím varováním:

Při výstupu z konstruktoru musí nenulová vlastnost "Name" obsahovat nenulovou hodnotu. Uvažujme deklaraci vlastnosti jako může být null.


I když je to varování, je to opravdu otravné! Jak opravit toto varování? Výchozí hodnota přiřazení je prázdný řetězec a kód je následující:

To znamená, že pokud vlastnost není ručně přiřazena, výchozí hodnota vlastnosti je prázdný řetězec.

Při použití lokální proměnné,Typ je provázek? může také generovat varování, jak je znázorněno na obrázku níže:



řešení: určit, zda je proměnná null, než ji použijeme, a pokud ano, nespouštějte níže uvedený kód, nebo si myslíteProměnná nikdy nemůže být nulová, lze použítArgumentNullException.ThrowIfNull(assemblyFullName); Varování lze také odstranit! Jinými slovy, pokud je proměnná nulová, vyhodí výjimku přímo během běhu!

Shrnutí: C# 8.0 tuto funkci zavedl a osobně cítím, že je to kvůli zvýšení náročnosti vývojářů a zabránění drobným chybám.

Pro více metodických řešení, která mohou být nulová, se prosím podívejte na:Přihlášení k hypertextovému odkazu je viditelné.





Předchozí:Dotazujte vzdálenou adresu Git aktuálního projektu
Další:ASP.NET Jádro (dvanáct) front-end JS, CSS balíčkování a komprese
Zveřejněno 2022-3-26 20:57:32 |
Učte se učit
Zveřejněno 28. 3. 2022 08:23:47 |
Pojďte se učit.
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com