Teilen über


CA1871: Übergeben Sie keine nullable Struktur an 'ArgumentNullException.ThrowIfNull'

Eigenschaft Wert
Regel-ID CA1871
Titel Übergeben Sie keine nullable Struktur an 'ArgumentNullException.ThrowIfNull'
Kategorie Leistung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 9 aktiviert Als Informationen

Ursache

Wenn eine nullable Struktur, z int? . B. oder Guid?, an ArgumentNullException.ThrowIfNullein Objekt übergeben wird, wird sie an ein Objekt geschachtelt, was zu einer Leistungseinbuße führt.

Regelbeschreibung

Um die Leistung zu verbessern, ist es besser, die HasValue Eigenschaft zu überprüfen und manuell eine Ausnahme auszuwerfen, als eine NULL-fähige Struktur an .ArgumentNullException.ThrowIfNull

Behandeln von Verstößen

Überprüfen Sie auf NULL, und lösen Sie den ArgumentNullException Vorgang 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 korrigiert die Verletzung:

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

    Console.WriteLine(value.Value);
}

Wann sollten Warnungen unterdrückt werden?

Es ist ungefährlich, diese Warnung zu unterdrücken, wenn die Leistung kein Problem ist.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder 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 Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.