Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| Properti | Nilai |
|---|---|
| ID Aturan | CA2207 |
| Judul | Inisialisasi bidang statik jenis nilai sebaris |
| Kategori | Penggunaan |
| Perbaikan bersifat merusak atau tidak merusak | Tidak terputus |
| Diaktifkan secara default di .NET 10 | Tidak |
| Bahasa yang berlaku | C# dan Visual Basic |
Penyebab
Jenis nilai mendeklarasikan konstruktor statis eksplisit.
Deskripsi aturan
Ketika jenis nilai dideklarasikan, ia menjalani inisialisasi default di mana semua bidang jenis nilai diatur ke nol dan semua bidang jenis referensi diatur ke null (Nothing di Visual Basic). Konstruktor statis secara eksplisit hanya dijamin berjalan sebelum konstruktor instansi atau anggota statis dari tipe tersebut dipanggil. Oleh karena itu, jika jenis dibuat tanpa memanggil konstruktor instans, konstruktor statis tidak dijamin berjalan.
Jika semua data statis diinisialisasi sebaris dan tidak ada konstruktor statis eksplisit yang dideklarasikan, pengkompilasi C# dan Visual Basic menambahkan beforefieldinit bendera ke definisi kelas CIL. Pengkompilasi juga menambahkan konstruktor statis privat yang berisi kode inisialisasi statis. Konstruktor statis privat ini dijamin akan berjalan sebelum ada field statis dari tipe tersebut diakses.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini menginisialisasi semua data statis ketika dideklarasikan dan menghapus konstruktor statis.
Example
// This struct violates the rule.
struct BadStruct
{
private static readonly int s_first;
private static readonly int s_second;
static BadStruct()
{
s_first = 1;
s_second = 2;
}
// ...
}
// This struct satisfies the rule.
struct GoodStruct
{
private static readonly int s_first = 1;
private static readonly int s_second = 2;
// ...
}
Kapan harus menekan peringatan
Jangan menyembunyikan peringatan dari aturan ini.
Aturan terkait
CA1810: Inisialisasi kolom statis tipe referensi secara sebaris