Yapı alanlarını yazılabilir hale getirme (IDE0064)
Özellik | Değer |
---|---|
Kural Kimliği | IDE0064 |
Başlık | Yapı alanlarını yazılabilir hale getirme |
Kategori | CodeQuality |
Alt Kategori | Dil kuralları (değiştirici tercihleri) |
Geçerli diller | C# |
Genel Bakış
Bu kural, bir veya daha fazla readonly
alan içeren yapıları algılar ve oluşturucunun dışına atama this
içerir. Kural alanları salt okunur olmayan, yani yazılabilir duruma dönüştürmeyi readonly
önerir. Bu tür yapı alanlarının olarak readonly
işaretlenmesi beklenmeyen davranışlara yol açabilir, çünkü alana atanan değer oluşturucunun dışına atandığında this
değişebilir.
Seçenekler
Bu kuralın ilişkili kod stili seçeneği yok.
Örnek
// Code with violations
struct MyStruct
{
public readonly int Value;
public MyStruct(int value)
{
Value = value;
}
public void Test()
{
this = new MyStruct(5);
}
}
// Fixed code
struct MyStruct
{
public int Value;
public MyStruct(int value)
{
Value = value;
}
public void Test()
{
this = new MyStruct(5);
}
}
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 IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064
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.IDE0064.severity = none
Bu kural kategorisinin tamamını devre dışı bırakmak için none
, kategorinin önem derecesini yapılandırma dosyasında olarak ayarlayın.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none
Daha fazla bilgi için bkz. Kod analizi uyarılarını gizleme.