Membuat bidang struct bisa ditulis (IDE0064)
Harta benda | Nilai |
---|---|
ID Aturan | IDE0064 |
Judul | Membuat bidang struct dapat ditulis |
Kategori | CodeQuality |
Subkategori | Aturan bahasa (preferensi pengubah) |
Bahasa yang relevan | C# |
Ikhtisar
Aturan ini mendeteksi struktur yang berisi satu atau beberapa bidang readonly
dan juga berisi penugasan untuk this
di luar konstruktor. Aturan merekomendasikan untuk mengonversi bidang readonly
menjadi non-baca saja, yaitu dapat ditulis. Menandai bidang struct tersebut sebagai readonly
dapat menyebabkan perilaku yang tidak terduga, karena nilai yang ditetapkan ke bidang dapat berubah saat this
ditetapkan di luar konstruktor.
Pilihan
Aturan ini tidak memiliki opsi gaya kode terkait.
Contoh
// 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);
}
}
Menyembunyikan peringatan
Jika Anda hanya ingin menekan satu pelanggaran, tambahkan arahan prapemrosesan ke file sumber Anda untuk menonaktifkan aturan tersebut kemudian mengaktifkannya kembali.
#pragma warning disable IDE0064
// The code that's violating the rule is on this line.
#pragma warning restore IDE0064
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi .
[*.{cs,vb}]
dotnet_diagnostic.IDE0064.severity = none
Untuk menonaktifkan seluruh kategori aturan ini, atur tingkat keparahan untuk kategori ke none
dalam file konfigurasi .
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-CodeQuality.severity = none
Untuk informasi selengkapnya, lihat Cara menekan peringatan analisis kode.