Udostępnij za pośrednictwem


Użyj dopasowania wzorca, aby uniknąć sprawdzania "is", po którym następuje rzutowanie (IDE0020 i IDE0038)

W tym artykule opisano dwie powiązane reguły i IDE0020IDE0038.

Właściwości Wartość
Identyfikator reguły IDE0020
Tytuł Użyj dopasowania wzorca, aby uniknąć is sprawdzania, po którym następuje rzutowanie (ze zmienną)
Kategoria Styl
Podkategorii Reguły języka (preferencje dopasowywania wzorców)
Odpowiednie języki C#
Opcje csharp_style_pattern_matching_over_is_with_cast_check
Właściwości Wartość
Identyfikator reguły IDE0038
Tytuł Użyj dopasowania wzorca, aby uniknąć is sprawdzania, po którym następuje rzutowanie (bez zmiennej)
Kategoria Styl
Podkategorii Reguły języka (preferencje dopasowywania wzorców)
Odpowiednie języki C#
Opcje csharp_style_pattern_matching_over_is_with_cast_check

Omówienie

Ta reguła stylu dotyczy użycia dopasowania wzorca języka C#, na przykład o is int i, w is przypadku sprawdzania, po którym następuje rzutowanie, na przykład if (o is int) { ... (int)o ... }. Włącz opcję IDE0020 lub IDE0038 na podstawie tego, czy wyrażenie rzutowane powinno zostać zapisane w oddzielnej zmiennej lokalnej:

  • IDE0020: Wyrażenie rzutu jest zapisywane w zmiennej lokalnej. Na przykład if (o is int) { var i = (int)o; } zapisuje wynik (int)o w zmiennej lokalnej.
  • IDE0038: Wyrażenie rzutu nie jest zapisywane w zmiennej lokalnej. Na przykład if (o is int) { if ((int)o == 1) { ... } } nie zapisuje wyniku w (int)o zmiennej lokalnej.

Opcje

Ustaw wartość skojarzonej opcji dla tej reguły, aby określić, czy preferowane jest dopasowywanie wzorca, czy is sprawdzanie według rzutowania typu.

Aby uzyskać więcej informacji na temat konfigurowania opcji, zobacz Format opcji.

csharp_style_pattern_matching_over_is_with_cast_check

Właściwości Wartość Opis
Nazwa opcji csharp_style_pattern_matching_over_is_with_cast_check
Wartości opcji true Preferuj is dopasowywanie wzorca zamiast wyrażeń z rzutami typu.
false Wyłącza regułę.
Wartość opcji domyślnej 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; ... }

Pomijanie ostrzeżenia

Jeśli chcesz pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby wyłączyć wszystkie reguły stylu kodu, ustaw ważność dla kategorii Style na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też