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.ThrowIfNull
ein 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.