Delen via


Patroonkoppeling gebruiken om 'is'-controle te voorkomen, gevolgd door een cast (IDE0020 en IDE0038)

In dit artikel worden twee gerelateerde regels beschreven, IDE0020 en IDE0038.

Eigenschap Waarde
regel-id IDE0020
titel Gebruik patroonherkenning om controle op is te vermijden, gevolgd door een cast (met variabele).
Categorie Stijl
Subcategorie Taalregels (patroonkoppelingsvoorkeuren)
Toepasselijke talen C#
Opties csharp_style_pattern_matching_over_is_with_cast_check
Eigenschap Waarde
Regel-ID IDE0038
titel Gebruik patroonherkenning om een is-controle te vermijden, gevolgd door een cast zonder dat een variabele wordt gebruikt.
Categorie Stijl
subcategorie Taalregels (patroonkoppelingsvoorkeuren)
Toepasselijke talen C#
opties csharp_style_pattern_matching_over_is_with_cast_check

Overzicht

Deze stijlregel betreft het gebruik van C# patroon dat overeenkomt met, bijvoorbeeld o is int i, over een is controle gevolgd door een cast, bijvoorbeeld if (o is int) { ... (int)o ... }. Schakel IDE0020 of IDE0038 in op basis van of de cast-expressie moet worden opgeslagen in een afzonderlijke lokale variabele:

  • IDE0020: Cast-expressie wordt opgeslagen in een lokale variabele. if (o is int) { var i = (int)o; } slaat bijvoorbeeld het resultaat van (int)o op in een lokale variabele.
  • IDE0038: De cast-expressie wordt niet in een lokale variabele opgeslagen. if (o is int) { if ((int)o == 1) { ... } } slaat bijvoorbeeld het resultaat van (int)o niet op in een lokale variabele.

Opties

Stel de waarde van de gekoppelde optie voor deze regel in om op te geven of patroonvergelijking of is-controle gevolgd door een typecasting de voorkeur heeft.

Zie Option-indelingvoor meer informatie over het configureren van opties.

csharp_style_pattern_matching_over_is_with_cast_check

Eigenschap Waarde Beschrijving
optie-naam csharp_style_pattern_matching_over_is_with_cast_check
optiewaarden true Geef de voorkeur aan patroonkoppeling in plaats van is expressies met typecasts.
false Hiermee schakelt u de regel uit.
standaardoptiewaarde 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; ... }

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst ervan in op none in het configuratiebestand.

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

Als u alle regels voor de codestijl wilt uitschakelen, stelt u de ernst voor de categorie Style in op none in het configuratiebestand.

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

Voor meer informatie, zie Hoe u codeanalysewaarschuwingen onderdrukt.

Zie ook