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é.
|