CA2207: Menginisialisasi bidang statik jenis nilai sebaris
Properti | Nilai |
---|---|
ID Aturan | CA2207 |
Judul | Inisialisasi bidang statik jenis nilai sebaris |
Golongan | Penggunaan |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
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 eksplisit hanya dijamin berjalan sebelum konstruktor instans atau anggota statis jenis 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 berjalan sebelum bidang statis jenis diakses.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini menginisialisasi semua data statis ketika dideklarasikan dan menghapus konstruktor statis.
Kapan harus menekan peringatan
Jangan menyembunyikan peringatan dari aturan ini.