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