Vor C# 8.0 konnten alle Referenztypen null sein. Null-Referenztypen beziehen sich auf eine Menge von Merkmalen, die in C# 8.0 eingeführt wurden und verwendet werden können fürMinimiere die Wahrscheinlichkeit, dass dein Code Runtime-Würfe verursacht。 Nullierbare Referenztypen umfassen drei Funktionen, um diese Ausnahmen zu vermeiden, darunter die Möglichkeit, Referenztypen explizit als nullierbar zu markieren:
- Optimierte statische Flussanalyse, um festzustellen, ob eine Variable null ist, bevor sie unreferenziert wird.
- Attribute, die verwendet werden, um die API zu annotieren, damit Stream Analytics den Nullzustand bestimmt.
- Variablenannotationen, die Entwickler verwenden können, um explizit den erwarteten Nullzustand einer Variablen zu deklarieren.
Nullzustandsanalyse und Variablenannotationen sind für bestehende Projekte standardmäßig deaktiviert, was bedeutet, dass alle Referenztypen weiterhin nullierbar sind. Ab .NET 6 sind diese Funktionen standardmäßig für neue Projekte aktiviert.
Dokumentation:Der Hyperlink-Login ist sichtbar.
Was ein Referenztyp, der null sein kann, tun sollMinimieren Sie die Wahrscheinlichkeit, dass Ihre Anwendung zur Laufzeit ein System.NullReferenceException auslöst.。
In einem Projekt, das ich mit .NET 6 entwickle, erstelle ich eine Name-Eigenschaft für eine neue Eigenschaft, die mir folgende Warnung vermittelt:
Beim Verlassen des Konstruktors muss die nicht-nullbare Eigenschaft "Name" einen nicht-nullen Wert enthalten. Betrachten Sie, die Eigenschaft als null zu deklarieren.
Obwohl es eine Warnung ist, ist es sehr nervig! Wie kann man diese Warnung beheben? Der Standardwert für die Zuweisung ist eine leere Zeichenkette, und der Code lautet wie folgt:
Das heißt, wenn die Eigenschaft nicht manuell zugewiesen wird, ist der Standardwert der Eigenschaft eine leere Zeichenkette.
Wenn eine lokale Variable verwendet wird,Der Typ ist Schnur? kann auch Warnungen auslösen, wie in der untenstehenden Abbildung dargestellt:
Lösung: Bestimmen Sie, ob die Variable null ist, bevor Sie sie verwenden, und falls ja, führen Sie den unten stehenden Code nicht aus, sonst denken SieDie Variable kann niemals null sein, kann verwendet werdenArgumentNullException.ThrowIfNull(assemblyFullName); Warnungen können ebenfalls entfernt werden! Mit anderen Worten: Wenn die Variable null ist, wird direkt während der Laufzeit eine Ausnahme ausgelöst!
Zusammenfassung: C# 8.0 hat dieses Feature eingeführt, und ich persönlich denke, dass es dazu dient, die Strenge der Entwickler zu verbessern und einige kleinere Fehler zu vermeiden.
Für weitere Methodenlösungen, die null sein können, siehe bitte:Der Hyperlink-Login ist sichtbar.
|