Aracılığıyla paylaş


'is' denetimini takiben bir tür dönüşümünü önlemek için desen eşleştirmeyi kullanın (IDE0020 ve IDE0038)

Bu makalede, IDE0020 ve IDE0038ilgili iki kural açıklanmaktadır.

Mülk Değer
Kural Kimliği IDE0020
Başlık is denetimini takiben bir tür dönüşümü (değişken ile) önlemek için desen eşleştirmeyi kullanın
Kategori Üslup
alt kategori Dil kuralları (desen eşleştirme tercihleri)
Geçerli diller C#
Seçenekleri csharp_style_pattern_matching_over_is_with_cast_check
Mülk Değer
Kural Kimliği IDE0038
Başlık is denetiminin ardından bir tür dönüştürme (değişken olmadan) olmasını önlemek için desen eşlemeyi kullanın.
Kategori Üslup
Alt Kategori Dil kuralları (desen eşleştirme tercihleri)
Geçerli diller C#
Seçenekleri csharp_style_pattern_matching_over_is_with_cast_check

Genel bakış

Bu stil kuralı, C#desen eşleştirmesinin kullanımıyla ilgilidir; örneğin, is denetiminde o is int ive ardından if (o is int) { ... (int)o ... }. Atama ifadesinin ayrı bir yerel değişkene kaydedilmesi gerekip gerekmediğine bağlı olarak IDE0020 veya IDE0038 etkinleştirin:

  • IDE0020: atama ifadesi yerel değişkene kaydedilir. Örneğin, if (o is int) { var i = (int)o; }(int)o sonucunu yerel değişkene kaydeder.
  • IDE0038: atama ifadesi yerel değişkene kaydedilmez. Örneğin, if (o is int) { if ((int)o == 1) { ... } }(int)o sonucunu yerel bir değişkene kaydetmez.

Seçenekler

Desen eşleştirme veya is denetimi ve ardından tür atamasının tercih edilip edilmeyeceğini belirtmek için bu kural için ilişkili seçeneğin değerini ayarlayın.

Seçenekleri yapılandırma hakkında daha fazla bilgi için bkz. Seçenek biçimi.

csharp_biçim_dili_desene_uyma_isleme_döküm_kontrolü_üzerinden

Mülk Değer Açıklama
Seçenek adı csharp_stil_desen_eşleştirme_is_üzerinden_cast_kontrolü_ile
Seçenek değerleri true Desen eşleştirmeyi, tür atamaları içeren is ifadeler yerine tercih edin.
false Kuralı devre dışı bırakır.
varsayılan seçenek değeri 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; ... }

Uyarıyı gizleme

Yalnızca tek bir ihlali engellemek istiyorsanız, kuralı devre dışı bırakmak ve sonra yeniden etkinleştirmek için kaynak dosyanıza ön işlemci yönergeleri ekleyin.

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

Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için önem derecesini yapılandırma dosyasında none olarak ayarlayın.

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

Tüm kod stili kurallarını devre dışı bırakmak için kategori Style önem derecesini yapılandırma dosyasında none olarak ayarlayın.

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

Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.

Ayrıca bkz.