foreach döngüsünde açık atama ekleme (IDE0220)
Özellik | Değer |
---|---|
Kural Kimliği | IDE0220 |
Başlık | Açık tür dönüştürme ekleme |
Kategori | Stil |
Alt Kategori | Dil kuralları (ifade düzeyi tercihleri) |
Geçerli diller | C# |
Seçenekler | dotnet_style_prefer_foreach_explicit_cast_in_source |
Genel Bakış
Bu kural, derleyici gizli bir atama eklediğinde bir foreach
döngüde açık bir atamanın yokluğuna bayrak ekler. Genel veya kesin olarak yazılan koleksiyonlar için, derleyici gizli bir atama eklediğinde açık bir atamayı zorlamak, deyiminde foreach
yanlış bir türün kullanımını ortaya çıkarabilir.
Seçenekler
Seçenekler, kuralın zorlamasını istediğiniz davranışı belirtir. Seçenekleri yapılandırma hakkında bilgi için bkz. Seçenek biçimi.
dotnet_style_prefer_foreach_explicit_cast_in_source
Özellik | Değer | Açıklama |
---|---|---|
Seçenek adı | dotnet_style_prefer_foreach_explicit_cast_in_source | |
Seçenek değerleri | always |
Kaynak kodunda açık atamaları tercih edin. |
when_strongly_typed |
Kesin türü belirlenmiş (genel) koleksiyonlar için açık atamaları tercih edin, ancak gibi ArrayListeski koleksiyonlar için tercih etmeyin. | |
Varsayılan seçenek değeri | when_strongly_typed |
Örnek
// Code with violations.
var list = new List<object>();
foreach (string item in list) { }
// Fixed code.
var list = new List<object>();
foreach (string item in list.Cast<string>())
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 önişlemci yönergeleri ekleyin.
#pragma warning disable IDE0220
// The code that's violating the rule is on this line.
#pragma warning restore IDE0220
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, yapılandırma dosyasındaki önem derecesini none
olarak ayarlayın.
[*.{cs,vb}]
dotnet_diagnostic.IDE0220.severity = none
Tüm kod stili kurallarını devre dışı bırakmak için, kategorinin önem derecesini Style
none
yapılandırma dosyasında olarak ayarlayın.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none
Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.