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 beschrieben: IDE0020 und IDE0038.

Eigenschaft 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)
Gültige Sprachen C#
Optionen csharp_style_pattern_matching_over_is_with_cast_check
Eigenschaft 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)
Gültige Sprachen C#
Optionen csharp_style_pattern_matching_over_is_with_cast_check

Übersicht

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: Umwandlungsausdruck wird in einer lokalen Variable gespeichert. Beispielsweise speichert if (o is int) { var i = (int)o; } das Ergebnis von (int)o in einer lokalen Variable.
  • IDE0038: Umwandlungsausdruck wird nicht in einer lokalen Variable gespeichert. Beispielsweise speichert if (o is int) { if ((int)o == 1) { ... } } das Ergebnis von (int)o nicht in einer lokalen Variable.

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

Eigenschaft 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 Die Regel wird deaktiviert.
Standardoptionswert 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

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 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 Konfigurationsdatei auf 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 Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Siehe auch