Freigeben über


CA1871: Keine Struktur, die NULL-Werte zulässt, an die Methode ArgumentNullException.ThrowIfNull übergeben

Eigentum Wert
Regel-ID CA1871
Titel Keine Struktur, die NULL-Werte zulässt, an die Methode ArgumentNullException.ThrowIfNull übergeben
Kategorie Leistung
Fix is breaking or non-breaking Nicht unterbrechend
Standardmäßig in .NET 9 aktiviert Zur Information

Verursachen

Wenn eine Struktur, die NULL-Werte zulässt, z. B. int? oder Guid?, an ArgumentNullException.ThrowIfNull übergeben wird, wird sie in einem Objekt geschachtelt. Das führt zu Leistungseinbußen.

Regelbeschreibung

Um die Leistung zu verbessern, ist es besser, die Eigenschaft HasValue zu überprüfen und eine Ausnahme manuell auszulösen, als eine nullable Struktur an ArgumentNullException.ThrowIfNullzu übergeben.

So beheben Sie Verstöße

Prüfen Sie auf NULL, und lösen Sie ArgumentNullException manuell aus.

Beispiel

Der folgende Codeausschnitt zeigt einen Verstoß gegen CA1871:

static void Print(int? value)
{
    ArgumentNullException.ThrowIfNull(value);
    Console.WriteLine(value.Value);
}

Der folgende Codeausschnitt behebt die Verletzung:

static void Print(int? value)
{
    if (!value.HasValue)
    {
        throw new ArgumentNullException(nameof(value));
    }

    Console.WriteLine(value.Value);
}

Wann Warnungen unterdrückt werden sollen

Es ist sicher, diese Warnung zu unterdrücken, wenn die Leistung kein Problem darstellt.

Unterdrücken einer Warnung

Wenn Sie nur eine einzelne Verletzung unterdrücken möchten, fügen Sie Ihrer Quelldatei Präprozessordirektiven hinzu, um die Regel zu deaktivieren und dann erneut zu aktivieren.

#pragma warning disable CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdateiauf none fest.

[*.{cs,vb}]
dotnet_diagnostic.CA1871.severity = none

Weitere Informationen finden Sie unter So unterdrücken Sie Codeanalysewarnungen.