Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In einem Nullable-Kontext führt der Compiler eine statische Analyse des Codes durch, um den NULL-Zustand aller Verweistypvariablen zu bestimmen:
- not-null: Die statische Analyse ermittelt, dass einer Variablen ein Wert ungleich NULL zugewiesen ist.
- vielleicht-null: Statische Analyse kann nicht bestimmen, dass eine Variable einem Wert ungleich Null zugewiesen ist.
Diese Zustände ermöglichen es dem Compiler, Warnungen bereitzustellen, wenn Sie möglicherweise einen NULL-Wert ableiten und einen System.NullReferenceException. Diese Attribute stellen dem Compiler semantische Informationen zum Nullzustand von Argumenten, Rückgabewerten und Objektmmber bereit. Die Attribute verdeutlichen den Status von Argumenten und Rückgabewerten. Der Compiler bietet genauere Warnungen, wenn Ihre APIs ordnungsgemäß mit diesen semantischen Informationen versehen sind.
In diesem Artikel werden diese Attribute der Nullable-Verweistypen und ihre Verwendung kurz beschrieben.
Beginnen wir mit einem Beispiel. Stellen Sie sich vor, Ihre Bibliothek verfügt über die folgende API, die eine Ressourcenzeichenfolge abruft. Diese Methode wurde ursprünglich in einem nullable-oblivious-Kontext kompiliert:
bool TryGetMessage(string key, out string message)
{
if (_messageMap.ContainsKey(key))
message = _messageMap[key];
else
message = null;
return message != null;
}
Das vorstehende Beispiel folgt dem bekannten Try*-Muster in .NET. Für diese API sind zwei Verweisparameter vorhanden: key und message. In Bezug auf den NULL-Zustand dieser Parameter umfasst diese API die folgenden Regeln:
- Aufrufer dürfen nicht
nullals Argument fürkeyübergeben. - Aufrufer können eine Variable übergeben, deren Wert
nullals Argument fürmessagelautet. - Wenn die Methode
TryGetMessageden Werttruezurückgibt, ist der Wert vonmessageungleich NULL. Wenn der Rückgabewert lautet, istfalseder Wert nullmessage.
Die Regel für key kann kurz und bündig ausgedrückt werden: key muss ein Non-Nullable-Verweistyp sein. Der Parameter message ist komplexer. Er lässt eine Variable mit dem Wert null als Argument zu, garantiert aber bei einem erfolgreichen Vorgang, dass das out-Argument nicht null ist. Für diese Szenarien ist ein umfangreicheres Vokabular zum Beschreiben der Erwartungen erforderlich. Das NotNullWhen Attribut beschreibt den NULL-Zustand für das Argument, das für den message Parameter verwendet wird.
Hinweis
Durch das Hinzufügen dieser Attribute erhält der Compiler mehr Informationen über die Regeln für Ihre API. Wenn der Aufruf von Code in einem nullfähigen aktivierten Kontext kompiliert wird, warnt der Compiler Aufrufer, wenn sie gegen diese Regeln verstoßen. Diese Attribute aktivieren keine zusätzlichen Überprüfungen für Ihre Implementierung.
| attribute | Kategorie | Bedeutung |
|---|---|---|
| AllowNull | Precondition | Ein nicht nullabler Parameter, ein Feld oder eine Eigenschaft kann null sein. |
| DisallowNull | Precondition | Nullable-Parameter, -Felder oder -Eigenschaften dürfen niemals NULL sein. |
| MaybeNull | Nachbedingung | Ein nicht nullabler Parameter, ein Feld, eine Eigenschaft oder ein Rückgabewert kann null sein. |
| NotNull | Nachbedingung | Ein nullabler Parameter, ein Feld, eine Eigenschaft oder ein Rückgabewert ist nie NULL. |
| MaybeNullWhen | Bedingte Nachbedingung | Ein nicht nullables Argument kann null sein, wenn die Methode den angegebenen bool Wert zurückgibt. |
| NotNullWhen | Bedingte Nachbedingung | Ein nullables Argument ist nicht NULL, wenn die Methode den angegebenen bool Wert zurückgibt. |
| NotNullIfNotNull | Bedingte Nachbedingung | Rückgabewerte, Eigenschaften oder Argumente sind nicht NULL, wenn das Argument für den angegebenen Parameter nicht NULL ist. |
| MemberNotNull | Hilfsmethoden für Methoden und Eigenschaften | Das aufgelistete Element ist nicht NULL, wenn die Methode zurückgegeben wird. |
| MemberNotNullWhen | Hilfsmethoden für Methoden und Eigenschaften | Das aufgelistete Element ist nicht NULL, wenn die Methode den angegebenen bool Wert zurückgibt. |
| DoesNotReturn | Unerreichbarer Code | Eine Methode oder Eigenschaft gibt niemals ein Ergebnis zurück. Anders ausgedrückt: Die Methode löst immer eine Ausnahme aus. |
| DoesNotReturnIf | Unerreichbarer Code | Diese Methode oder Eigenschaft gibt niemals ein Ergebnis zurück, wenn der zugeordnete bool-Parameter den angegebenen Wert aufweist. |
Die vorherigen Beschreibungen sind eine kurze Referenz zur Funktionsweise jedes Attributs. In den folgenden Abschnitten werden Verhalten und Bedeutung dieser Attribute ausführlicher beschrieben.
Vorbedingungen: AllowNull und DisallowNull
Betrachten Sie eine Eigenschaft mit Lese-/Schreibzugriff, die niemals null zurückgibt, weil sie einen angemessen Standardwert aufweist. Aufrufer übergeben null an die set-Zugriffsmethode, wenn diese auf den Standardwert festgelegt wird. Denken Sie zum Beispiel an ein Messagingsystem, das in einem Livechat nach einem Benutzernamen fragt. Wenn kein Name angegeben wird, erzeugt das System einen zufälligen Namen:
public string ScreenName
{
get => _screenName;
set => _screenName = value ?? GenerateRandomScreenName();
}
private string _screenName;
Wenn Sie den vorstehenden Code in einem Kontext ohne Nullable-Beachtung kompilieren, ist alles in Ordnung. Sobald Sie Nullable-Verweistypen aktivieren, wird die ScreenName-Eigenschaft zu einem Non-Nullable-Verweis. Aufrufer müssen die zurückgegebene Eigenschaft für null nicht überprüfen. Aber bei Festlegung der Eigenschaft auf null wird jetzt eine Warnung generiert. Um diese Art von Code zu unterstützen, fügen Sie der Eigenschaft das Attribut System.Diagnostics.CodeAnalysis.AllowNullAttribute hinzu, wie im folgenden Code gezeigt:
[AllowNull]
public string ScreenName
{
get => _screenName;
set => _screenName = value ?? GenerateRandomScreenName();
}
private string _screenName = GenerateRandomScreenName();
Möglicherweise müssen Sie eine using Direktive System.Diagnostics.CodeAnalysis hinzufügen, um diese und andere in diesem Artikel erläuterte Attribute zu verwenden. Das Attribut wird auf die Eigenschaft angewendet, nicht auf die set-Zugriffsmethode. Das AllowNull-Attribut gibt Vorbedingungen an und wird nur auf Argumente angewendet. Die get-Zugriffsmethode umfasst einen Rückgabewert, aber keine Parameter. Deshalb gilt das AllowNull-Attribut nur für die set-Zugriffsmethode.
Das vorangehende Beispiel veranschaulicht, wonach beim Hinzufügen des AllowNull-Attributs für ein Argument gesucht werden muss:
- Der allgemeine Vertrag für diese Variable sieht vor, dass sie nicht
nullsein darf, deshalb wird ein Non-Nullable-Verweistyp benötigt. - Es gibt Szenarien, in denen ein Aufrufer
nullals Argument übergibt. Diese sind jedoch nicht die Regel.
Am häufigsten benötigen Sie dieses Attribut für Eigenschaften oder in, , outund ref Argumente. Das AllowNull-Attribut stellt die beste Wahl dar, wenn eine Variable typischerweise ungleich NULL ist, Sie aber null als Vorbedingung zulassen müssen.
Vergleichen Sie dies mit Szenarien für die Verwendung von DisallowNull: Mit diesem Attribut legen Sie fest, dass ein Argument eines Nullwerte zulassenden Verweistyps nicht null sein darf. Nehmen wir als Beispiel eine Eigenschaft, bei der null der Standardwert ist und Clients die Eigenschaft nur auf einen Wert ungleich NULL festlegen können. Betrachten Sie folgenden Code:
public string ReviewComment
{
get => _comment;
set => _comment = value ?? throw new ArgumentNullException(nameof(value), "Cannot set to null");
}
string _comment;
Der vorstehende Code ist der beste Weg, um in Ihrem Entwurf auszudrücken, dass ReviewComment den Wert null annehmen könnte, aber nicht auf null festgelegt werden kann. Sobald dieser Code Nullable-fähig ist, können Sie dieses Konzept für Aufrufer mit System.Diagnostics.CodeAnalysis.DisallowNullAttribute klarer ausdrücken:
[DisallowNull]
public string? ReviewComment
{
get => _comment;
set => _comment = value ?? throw new ArgumentNullException(nameof(value), "Cannot set to null");
}
string? _comment;
In einem Nullable-Kontext kann die ReviewComment-Zugriffsmethode von get den Standardwert null zurückgeben. Der Compiler gibt eine Warnung aus, dass vor dem Zugriff eine Überprüfung erforderlich ist. Darüber hinaus werden Aufrufer gewarnt, dass der Wert null zwar möglich ist, Aufrufer aber den Wert null nicht explizit festlegen sollten. Das DisallowNull-Attribut gibt ebenfalls eine Vorbedingung an, es hat keine Auswirkung auf die get-Zugriffsmethode. Sie verwenden das DisallowNull-Attribut, wenn folgende Punkte zutreffen:
- Die Variable könnte in wichtigen Szenarien den Wert
nullannehmen, häufig bei der ersten Instanziierung. - Die Variable darf nicht explizit auf
nullfestgelegt werden.
Diese Situationen sind häufig in Code anzutreffen, in dem NULL-Werte ursprünglich nicht beachtet wurden. Möglicherweise werden Objekteigenschaften in zwei unterschiedlichen Initialisierungsvorgängen festgelegt. Es kann sein, dass einige Eigenschaften erst nach Abschluss einiger asynchroner Arbeit festgelegt werden.
Mit AllowNull den Attributen können DisallowNull Sie angeben, dass die Vorbedingungen für Variablen möglicherweise nicht mit den Null-Anmerkungen für diese Variablen übereinstimmen. Diese Anmerkungen enthalten weitere Details zu den Merkmalen Ihrer API. Diese zusätzlichen Informationen helfen Aufrufern, Ihre API korrekt zu verwenden. Wie bereits erwähnt, geben Sie Vorbedingungen mit den folgenden Attributen an:
- AllowNull: Ein nicht nullwertes Argument kann null sein.
- DisallowNull: Ein Nullwerte zulassendes Argument darf nie NULL sein.
Nachbedingungen: MaybeNull undNotNull
Angenommen, Sie verfügen über eine Methode mit der folgenden Signatur:
public Customer FindCustomer(string lastName, string firstName)
Sie haben wahrscheinlich eine Methode wie diese geschrieben, um zurückzukehren null , wenn der gesuchte Name nicht gefunden wurde. Durch den Wert null wird klar ausgedrückt, dass der Datensatz nicht gefunden wurde. In diesem Beispiel ändern Sie den Rückgabetyp wahrscheinlich von Customer in Customer?. Durch das Deklarieren des Rückgabetyps als Nullable-Verweistyp wird die Absicht dieser API klar ausgedrückt:
public Customer? FindCustomer(string lastName, string firstName)
Aus Gründen, die unter "Generics nullability " behandelt werden, erzeugt dieses Verfahren möglicherweise nicht die statische Analyse, die Ihrer API entspricht. Möglicherweise haben Sie eine generische Methode, die einem ähnlichen Muster folgt:
public T Find<T>(IEnumerable<T> sequence, Func<T, bool> predicate)
Die Methode gibt null zurück, wenn das gesuchte Element nicht gefunden wird. Sie können festlegen, dass die Methode null zurückgibt, wenn ein Element nicht gefunden wird, indem Sie der Methodenrückgabe die Anmerkung MaybeNull hinzufügen:
[return: MaybeNull]
public T Find<T>(IEnumerable<T> sequence, Func<T, bool> predicate)
Der vorangehende Code informiert Aufrufer darüber, dass der Rückgabewert tatsächlich NULL sein kann . Außerdem wird der Compiler darüber informiert, dass die Methode einen null Ausdruck zurückgeben kann, obwohl der Typ nicht nullfähig ist. Wenn Sie über eine generische Methode verfügen, die eine Instanz ihres Typparameters (T) zurückgibt, können Sie mithilfe des null-Attributs ausdrücken, dass sie niemals NotNull zurückgibt.
Sie können auch angeben, dass ein Rückgabewert oder ein Argument nicht NULL sein darf, obwohl der Typ ein Nullable-Verweistyp ist. Die folgende Methode ist eine Hilfsmethode, die ausgelöst wird, wenn das erste Argument null ist:
public static void ThrowWhenNull(object value, string valueExpression = "")
{
if (value is null) throw new ArgumentNullException(nameof(value), valueExpression);
}
Sie können diese Routine folgendermaßen aufrufen:
public static void LogMessage(string? message)
{
ThrowWhenNull(message, $"{nameof(message)} must not be null");
Console.WriteLine(message.Length);
}
Nach dem Aktivieren von NULL-Verweistypen möchten Sie sicherstellen, dass der vorstehende Code ohne Warnungen kompiliert wird. Wenn die Methode ein Ergebnis zurückgibt, wird garantiert, dass der value-Parameter ungleich NULL ist. Es ist jedoch weiterhin zulässig, ThrowWhenNull mit einem NULL-Verweis aufzurufen. Sie können value als Nullable-Verweistyp festlegen und die Nachbedingung NotNull zur Parameterdeklaration hinzufügen:
public static void ThrowWhenNull([NotNull] object? value, string valueExpression = "")
{
_ = value ?? throw new ArgumentNullException(nameof(value), valueExpression);
// other logic elided
Der vorangehende Code drückt den vorhandenen Vertrag klar aus: Aufrufer können eine Variable mit dem Wert null übergeben, aber es wird garantiert, dass das Argument nie NULL ist, wenn die Methode ohne Auslösen einer Ausnahme zurückgegeben wird.
Sie geben nicht bedingte Nachbedingungen mit den folgenden Attributen an:
- VielleichtNull: Ein nicht nullwertbarer Rückgabewert kann null sein.
- NotNull: Ein nullabler Rückgabewert ist nie NULL.
Bedingte Nachbedingungen: NotNullWhen, MaybeNullWhen und NotNullIfNotNull
Ihnen ist die string-Methode String.IsNullOrEmpty(String) wahrscheinlich vertraut. Diese Methode gibt true zurück, wenn das Argument NULL oder eine leere Zeichenfolge ist. Die Methode ist eine Form der NULL-Überprüfung: Aufrufer müssen eine NULL-Überprüfung des Arguments durchführen, wenn die Methode false zurückgibt. Um eine Methode wie diese NULL-fähig zu machen, legen Sie das Argument auf einen Nullable-Verweistyp fest und fügen das NotNullWhen-Attribut hinzu:
bool IsNullOrEmpty([NotNullWhen(false)] string? value)
Auf diese Weise wird der Compiler darüber informiert, dass jeglicher Code mit Rückgabewert false nicht auf NULL überprüft werden muss. Durch das Hinzufügen des Attributs wird die statische Analyse des Compilers darüber informiert, dass IsNullOrEmpty die erforderliche NULL-Überprüfung durchführt: bei Rückgabe von false ist das Argument nicht null.
string? userInput = GetUserInput();
if (!string.IsNullOrEmpty(userInput))
{
int messageLength = userInput.Length; // no null check needed.
}
// null check needed on userInput here.
Die String.IsNullOrEmpty(String) Methode ist wie im vorherigen Beispiel dargestellt. Möglicherweise haben Sie ähnliche Methoden in Ihrer Codebasis, die den Status von Objekten auf NULL-Werte überprüfen. Der Compiler erkennt keine benutzerdefinierten NULL-Überprüfungsmethoden, und Sie müssen die Anmerkungen selbst hinzufügen. Wenn Sie das Attribut hinzufügen, weiß die statische Analyse des Compilers, wann die getestete Variable nullgecheckt ist.
Eine weitere Verwendung für diese Attribute ist das Try*-Muster. Die Nachbedingungen für ref- und out-Argumente werden über den Rückgabewert kommuniziert. Betrachten Sie diese oben gezeigte Methode (in einem Non-Nullable-Kontext):
bool TryGetMessage(string key, out string message)
{
if (_messageMap.ContainsKey(key))
message = _messageMap[key];
else
message = null;
return message != null;
}
Die vorstehende Methode folgt einem typischen .NET-Idiom: Der Rückgabewert gibt an, ob message er auf den gesuchten Wert festgelegt wurde oder, wenn keine Nachricht gefunden wird, auf den Standardwert. Wenn die Methode true zurückgibt, ist der Wert von message ungleich NULL. Andernfalls legt die Methode message auf NULL fest.
In einem Nullable-Kontext können Sie dieses Idiom mithilfe des Attributs NotNullWhen kommunizieren. Wenn Sie Parameter für Nullable-Verweistypen mit Anmerkungen versehen, ändern Sie message in string?, und fügen Sie ein Attribut hinzu:
bool TryGetMessage(string key, [NotNullWhen(true)] out string? message)
{
if (_messageMap.ContainsKey(key))
message = _messageMap[key];
else
message = null;
return message is not null;
}
Im vorstehenden Beispiel ist der Wert von message bekanntermaßen ungleich NULL, wenn TryGetMessage den Wert true zurückgibt. Sie sollten ähnliche Methoden in Ihrer Codebasis in gleicher Weise mit Anmerkungen versehen: Die Argumente könnten null entsprechen und sind bekanntermaßen ungleich NULL, wenn die Methode true zurückgibt.
Es gibt ein endgültiges Attribut, das Sie möglicherweise auch benötigen. Gelegentlich hängt der NULL-Zustand eines Rückgabewerts vom NULL-Zustand von mindestens einem Argument ab. Diese Methoden geben einen Wert ungleich NULL zurück, wenn bestimmte Argumente nicht nullangegeben sind. Um diese Methoden korrekt mit Anmerkungen zu versehen, verwenden Sie das NotNullIfNotNull-Attribut. Sehen Sie sich die folgende Methode an:
string GetTopLevelDomainFromFullUrl(string url)
Wenn das url-Argument ungleich NULL ist, ist die Ausgabe nicht null. Nachdem nullable Verweise aktiviert wurden, müssen Sie weitere Anmerkungen hinzufügen, wenn Ihre API ein Null-Argument akzeptieren kann. Sie können den Rückgabetyp wie im folgenden Code gezeigt mit Anmerkungen versehen:
string? GetTopLevelDomainFromFullUrl(string? url)
Das funktioniert auch, erzwingt aber häufig aufrufer, zusätzliche null Prüfungen zu implementieren. Der Vertrag sieht vor, dass der Rückgabewert nur dann null lautet, wenn das Argument url den Wert null aufweist. Um diesen Vertrag auszudrücken, versehen Sie die Methode wie im folgenden Code gezeigt mit Anmerkungen:
[return: NotNullIfNotNull(nameof(url))]
string? GetTopLevelDomainFromFullUrl(string? url)
Im obigen Beispiel wird der nameof-Operator für den Parameter url verwendet. Der Rückgabewert und das Argument wurden beide um ? ergänzt, um darauf hinzuweisen, dass beide den Wert null annehmen können. Das Attribut verdeutlicht weiter, dass der Rückgabewert nicht null ist, wenn das url Argument nicht nullangegeben ist.
Sie geben bedingte Nachbedingungen mit diesen Attributen an:
-
VielleichtNullWhen: Ein nicht nullwertes Argument kann null sein, wenn die Methode den angegebenen
boolWert zurückgibt. -
NotNullWhen: Ein nullables Argument ist nicht NULL, wenn die Methode den angegebenen
boolWert zurückgibt. - NotNullIfNotNull: Ein Rückgabewert ist nicht NULL, wenn das Argument für den angegebenen Parameter nicht NULL ist.
Hilfsmethoden: MemberNotNull und MemberNotNullWhen
Diese Attribute geben Ihre Absicht an, wenn Sie allgemeinen Code aus Konstruktoren in Hilfsmethoden umgestaltet haben. Der C#-Compiler analysiert Konstruktoren und Feldinitialisierer, um sicherzustellen, dass alle nicht nullablen Referenzfelder initialisiert werden, bevor jeder Konstruktor zurückgegeben wird. Der C#-Compiler verfolgt jedoch nicht in allen Hilfsmethoden Feldzuweisungen. Der Compiler gibt die Warnung CS8618 aus, wenn Felder nicht direkt im Konstruktor initialisiert werden, sondern in einer Hilfsmethode. Sie fügen die MemberNotNullAttribute-Klasse einer Methodendeklaration hinzu und geben die Felder an, die mit einem Wert ungleich NULL in der Methode initialisiert werden. Betrachten Sie etwa das folgende Beispiel:
public class Container
{
private string _uniqueIdentifier; // must be initialized.
private string? _optionalMessage;
public Container()
{
Helper();
}
public Container(string message)
{
Helper();
_optionalMessage = message;
}
[MemberNotNull(nameof(_uniqueIdentifier))]
private void Helper()
{
_uniqueIdentifier = DateTime.Now.Ticks.ToString();
}
}
Sie können mehrere Feldnamen als Argumente für den MemberNotNull-Attributkonstruktor angeben.
Das MemberNotNullWhenAttribute verfügt über ein bool-Argument. Sie verwenden MemberNotNullWhen, wenn die Hilfsmethode ein bool zurückgibt, das angibt, ob Ihre Hilfsmethode Felder initialisiert.
Beenden der Nullable-Analyse bei Auslösen der aufgerufenen Methode
Einige Methoden, in der Regel Ausnahmehilfsprogramme oder andere Hilfsmethoden, beenden immer, indem eine Ausnahme ausgelöst wird. Oder ein Hilfsprogramm löst eine Ausnahme basierend auf dem Wert eines booleschen Arguments aus.
Im ersten Fall können Sie das DoesNotReturnAttribute-Attribut zur Methodendeklaration hinzufügen. Bei der vom Compiler durchgeführten Analyse des NULL-Zustands wird kein Code in einer Methode überprüft, die auf den Aufruf einer Methode mit der Anmerkung DoesNotReturn folgt. Betrachten Sie diese Methode:
[DoesNotReturn]
private void FailFast()
{
throw new InvalidOperationException();
}
public void SetState(object containedField)
{
if (containedField is null)
{
FailFast();
}
// containedField can't be null:
_field = containedField;
}
Der Compiler gibt nach dem Aufruf von FailFast keine Warnungen aus.
Im zweiten Fall fügen Sie das System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute-Attribut einem booleschen Parameter der Methode hinzu. Sie können das vorherige Beispiel folgendermaßen abändern:
private void FailFastIf([DoesNotReturnIf(true)] bool isNull)
{
if (isNull)
{
throw new InvalidOperationException();
}
}
public void SetFieldState(object? containedField)
{
FailFastIf(containedField == null);
// No warning: containedField can't be null here:
_field = containedField;
}
Wenn der Wert des Arguments dem Wert des DoesNotReturnIf-Konstruktors entspricht, führt der Compiler nach dieser Methode keine Analyse des NULL-Zustands durch.
Zusammenfassung
Das Hinzufügen von Nullable-Verweistypen ermöglicht eine Beschreibung der Erwartungen für Ihre APIs für Variablen, die den Wert null annehmen könnten. Die Attribute erweitern die Möglichkeiten zur Beschreibung des NULL-Zustands von Variablen als Vor- und Nachbedingungen. Durch diese Attribute werden Ihre Erwartungen klarer beschrieben und verbessern das Benutzererlebnis für Entwickler, die Ihre APIs nutzen.
Wenn Sie Bibliotheken für einen Nullable-Kontext aktualisieren, fügen Sie diese Attribute hinzu, um Benutzer bei der richtigen Verwendung Ihrer APIs zu unterstützen. Diese Attribute unterstützen Sie bei der vollständigen Beschreibung des NULL-Zustands von Argumenten und Rückgabewerten.
- AllowNull: Ein nicht nullwertes Feld, ein Parameter oder eine Eigenschaft kann null sein.
- DisallowNull: Nullable-Felder, -Parameter oder -Eigenschaften dürfen niemals NULL sein.
- VielleichtNull: Ein nicht nullwertes Feld, ein Parameter, eine Eigenschaft oder ein Rückgabewert kann NULL sein.
- NotNull: Ein nullables Feld, ein Parameter, eine Eigenschaft oder ein Rückgabewert ist nie NULL.
-
VielleichtNullWhen: Ein nicht nullwertes Argument kann null sein, wenn die Methode den angegebenen
boolWert zurückgibt. -
NotNullWhen: Ein nullables Argument ist nicht NULL, wenn die Methode den angegebenen
boolWert zurückgibt. - NotNullIfNotNull: Parameter, Eigenschaften oder Rückgabewerte sind nicht NULL, wenn das Argument für den angegebenen Parameter nicht NULL ist.
- DoesNotReturn: Eine Methode oder Eigenschaft gibt niemals ein Ergebnis zurück. Anders ausgedrückt: Die Methode löst immer eine Ausnahme aus.
-
DoesNotReturnIf: Diese Methode oder Eigenschaft gibt niemals ein Ergebnis zurück, wenn der zugeordnete
bool-Parameter den angegebenen Wert aufweist.