Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Mülkiyet | Değer |
|---|---|
| Kural Kimliği | IDE0221 |
| Başlık | Açık dönüştürme ekleme |
| Kategori | Stil |
| alt kategorisi | Dil kuralları (ifade düzeyi tercihleri) |
| Geçerli diller | C# |
| Options | dotnet_style_prefer_non_hidden_explicit_cast_in_source |
Genel bakış
Bu kural, derleyicinin ek bir gizli açık atama eklediği kaynak kodunda açık atamaları işaretler. Hem görünür hem de gizli dönüştürmeler, farklı nedenlerle çalışma zamanında başarısız olabilir. Bu kural bu tür bir kodu işaretlediğinde, kodun amacını net hale getirmek için ara atamanın açıkça kaynağa eklenmesini önerir.
Örneğin, (Derived)x yazarsanız, ilk olarak bir temel türe ve sonra türetilen türe olmak üzere iki açık dönüştürme gerektiren bir tür olan x, kaynakta yalnızca bir dönüştürme görünür. Derleyici, kaynakta herhangi bir gösterge olmadan ara atamayı ekler. Bu kural, her iki tip dönüşümünün de açıkça yazılmasını önerir: (Derived)(Base)x.
Options
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_non_hidden_explicit_cast_in_source
| Mülkiyet | Değer | Açıklama |
|---|---|---|
| Seçenek adı | dotnet_style_prefer_non_hidden_explicit_cast_in_source | |
| Seçenek değerleri | true |
Tüm ara açık atamaların kaynak kodda görünür olmasını tercih edin. |
false |
Tüm ara açık tip dönüşümlerinin kaynak kodda görünür olmasını tercih etmeyin. | |
| Varsayılan seçenek değeri | true |
Example
class Base { }
class Derived : Base { }
class Castable
{
public static explicit operator Base(Castable c) => new Base();
}
class C
{
void M()
{
// Code with violation: the compiler inserts a hidden (Base) cast.
var v = (Derived)new Castable();
// Fixed code: both casts are explicit in source.
var v2 = (Derived)(Base)new Castable();
}
}
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 IDE0221
// The code that's violating the rule is on this line.
#pragma warning restore IDE0221
Bir dosya, klasör veya projenin kuralını devre dışı bırakmak için, none önem derecesini olarak ayarlayın.
[*.cs]
dotnet_diagnostic.IDE0221.severity = none
Kod stili kuralların tümünü devre dışı bırakmak için, kategorinin Stylenone önem derecesini yapılandırma dosyasında olarak ayarlayın.
[*.cs]
dotnet_analyzer_diagnostic.category-Style.severity = none
Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.