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.
CA2019:
| Properti | Nilai |
|---|---|
| ID Aturan | CA2019 |
| Judul |
ThreadStatic bidang tidak boleh menggunakan inisialisasi sebaris |
| Golongan | Keandalan |
| Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
| Diaktifkan secara default di .NET 10 | Sebagai saran |
Penyebab
Bidang yang dianotasikan dengan ThreadStaticAttribute diinisialisasi sebaris atau secara eksplisit dalam static konstruktor (Shared di Visual Basic).
Deskripsi aturan
ThreadStaticAttribute bidang harus diinisialisasi dengan malas saat digunakan dan bukan dengan inisialisasi sebaris atau secara eksplisit dalam static konstruktor (Shared di Visual Basic).
static Konstruktor hanya menginisialisasi bidang pada utas yang menjalankan konstruktor jenisstatic.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran, hapus inisialisasi sebaris atau static konstruktor. Sebagai gantinya, inisialisasi bidang pada penggunaan pertama.
Contoh
Cuplikan kode berikut menunjukkan pelanggaran CA2019:
class C
{
[ThreadStatic]
private static Object obj = new();
}
Class C
<ThreadStatic>
Private Shared obj As New Object()
End Class
Cuplikan kode berikut menunjukkan cara memperbaiki pelanggaran:
class C
{
[ThreadStatic]
private static Object obj;
static void S1()
{
obj ??= new Object();
}
}
Class C
<ThreadStatic>
Private Shared obj
Shared Sub S1()
If obj Is Nothing Then
obj = New Object()
End If
End Sub
End Class
Kapan harus menekan peringatan
Aman untuk menekan peringatan dari aturan ini, tetapi aplikasi Anda mungkin menunjukkan perilaku yang tidak terduga.