Bagikan melalui


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 8 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.

CA1810: Inisialisasi bidang statik jenis referensi sebaris