Share via


Använd mönstermatchning för att undvika is-kontroll följt av en gjuten (IDE0020 och IDE0038)

Den här artikeln beskriver två relaterade regler och IDE0020IDE0038.

Property Värde
Regel-ID IDE0020
Title Använd mönstermatchning för att undvika is kontroll följt av en gjuten (med variabel)
Kategori Format
Underkategori Språkregler (inställningar för mönstermatchning)
Tillämpliga språk C#
Alternativ csharp_style_pattern_matching_over_is_with_cast_check
Property Värde
Regel-ID IDE0038
Title Använd mönstermatchning för att undvika is kontroll följt av en gjuten (utan variabel)
Kategori Format
Underkategori Språkregler (inställningar för mönstermatchning)
Tillämpliga språk C#
Alternativ csharp_style_pattern_matching_over_is_with_cast_check

Översikt

Den här formatregeln gäller användningen av C#- mönstermatchning, o is int itill exempel , över en is kontroll följt av en cast, till exempel if (o is int) { ... (int)o ... }. Aktivera antingen IDE0020 eller IDE0038 baserat på om cast-uttrycket ska sparas i en separat lokal variabel:

  • IDE0020: Cast-uttrycket sparas i en lokal variabel. Till exempel if (o is int) { var i = (int)o; } sparar resultatet av (int)o i en lokal variabel.
  • IDE0038: Cast-uttrycket sparas inte i en lokal variabel. Sparar till exempel if (o is int) { if ((int)o == 1) { ... } } inte resultatet av (int)o i en lokal variabel.

Alternativ

Ange värdet för det associerade alternativet för den här regeln för att ange om mönstermatchning eller is kontroll följt av en typgjutning är att föredra.

Mer information om hur du konfigurerar alternativ finns i Alternativformat.

csharp_style_pattern_matching_over_is_with_cast_check

Property Värde beskrivning
Alternativnamn csharp_style_pattern_matching_over_is_with_cast_check
Alternativvärden true Föredrar mönstermatchning i stället för is uttryck med typgjutningar.
false Inaktiverar regeln.
Standardalternativvärde 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; ... }

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan regeln.

#pragma warning disable IDE0020 // Or IDE0038
// The code that's violating the rule is on this line.
#pragma warning restore IDE0020 // Or IDE0038

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

[*.{cs,vb}]
dotnet_diagnostic.IDE0020.severity = none
dotnet_diagnostic.IDE0038.severity = none

Om du vill inaktivera alla regler i kodformat anger du allvarlighetsgraden för kategorin Style till i konfigurationsfilen.none

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även