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 |
| Kategori | Keandalan |
| Perbaikan bersifat merusak atau tidak merusak | Tidak terputus |
| Diaktifkan secara default di .NET 10 | Sebagai saran |
| Bahasa yang berlaku | C# dan Visual Basic |
Penyebab
Bidang yang dianotasi dengan ThreadStaticAttribute diinisialisasi secara langsung atau secara eksplisit dalam konstruktor static (Shared di Visual Basic).
Deskripsi aturan
ThreadStaticAttribute variabel harus diinisialisasi secara 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 dari jenis static.
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.