Freigeben über


Verwenden des Musterabgleichs zur Vermeidung einer Überprüfung vom Typ „is“ gefolgt von einer Umwandlung (IDE0020 und IDE0038)

In diesem Artikel werden zwei verwandte Regeln, IDE0020 und IDE0038beschrieben.

Eigentum Wert
Regel-ID IDE0020
Titel Musterabgleich verwenden, um eine is-Überprüfung gefolgt von einer Umwandlung zu vermeiden (mit Variable)
Kategorie Stil
Unterkategorie Sprachregeln (Einstellungen für den Musterabgleich)
Anwendbare Sprachen C#
Optionen csharp_style_pattern_matching_over_is_with_cast_check
Eigentum Wert
Regel-ID IDE0038
Titel Musterabgleich verwenden, um eine is-Überprüfung gefolgt von einer Umwandlung zu vermeiden (ohne Variable)
Kategorie Stil
Unterkategorie Sprachregeln (Einstellungen für den Musterabgleich)
Anwendbare Sprachen C#
Optionen csharp_style_pattern_matching_over_is_with_cast_check

Überblick

Diese Stilregel betrifft die Verwendung des Musterabgleichs von C#, z. B. o is int i, anstelle einer is-Überprüfung gefolgt von einer Umwandlung, wie z. B. if (o is int) { ... (int)o ... }. Aktivieren Sie entweder IDE0020 oder IDE0038 – je nachdem, ob der Umwandlungsausdruck in einer separaten lokalen Variable gespeichert werden soll oder nicht:

  • IDE0020: Cast-Ausdruck wird in einer lokalen Variablen gespeichert. Beispielsweise speichert if (o is int) { var i = (int)o; } das Ergebnis von (int)o in einer lokalen Variablen.
  • IDE0038: Cast-Ausdruck wird nicht in einer lokalen Variablen gespeichert. Beispielsweise speichert if (o is int) { if ((int)o == 1) { ... } } das Ergebnis von (int)o nicht in einer lokalen Variablen.

Optionen

Legen Sie den Wert der zugeordneten Option für diese Regel fest, um anzugeben, ob ein Musterabgleich oder eine is-Überprüfung gefolgt von einer Typumwandlung bevorzugt wird.

Weitere Informationen zum Konfigurieren von Optionen finden Sie unter Optionsformat.

csharp_style_pattern_matching_over_is_with_cast_check

Eigentum Wert Beschreibung
Name der Option csharp_style_pattern_matching_over_is_with_cast_check
Optionswerte true Mustervergleich gegenüber is-Ausdrücken mit Typumwandlungen bevorzugen.
false Deaktiviert die Regel.
Standardwert der Option true
// csharp_style_pattern_matching_over_is_with_cast_check = true
if (o is int i) {...}

// csharp_style_pattern_matching_over_is_with_cast_check = false
if (o is int) {var i = (int)o; ... }

Unterdrücken einer Warnung

Wenn Sie nur einen einzelnen Verstoß 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 IDE0020 // Or IDE0038
// The code that's violating the rule is on this line.
#pragma warning restore IDE0020 // Or IDE0038

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.IDE0020.severity = none
dotnet_diagnostic.IDE0038.severity = none

Um alle Regeln im Code-Stil zu deaktivieren, setzen Sie den Schweregrad für die Kategorie in der KonfigurationsdateiStyle auf none.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

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

Siehe auch