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.ThrowIfNull
zu ü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.