Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
CA2019:
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA2019 |
Cím |
ThreadStatic a mezők nem használhatnak beágyazott inicializálást |
Kategória | Megbízhatóság |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 9-ben | Javaslatként |
Ok
A jegyzetekkel ellátott ThreadStaticAttribute mezők inicializálva lesznek beágyazottan vagy explicit módon egy static
(Shared
Visual Basic) konstruktorban.
Szabály leírása
ThreadStaticAttribute a mezőket lazán kell inicializálni használatkor, és nem beágyazott inicializálással vagy explicit módon egy static
(Shared
Visual Basic) konstruktorban. A static
konstruktor csak a típus konstruktorát futtató szál mezőjét inicializálja static
.
Szabálysértés kijavítása
A szabálysértés kijavításához távolítsa el a beágyazott vagy static
konstruktorinicializálást. Ehelyett inicializálja a mezőt az első használatkor.
Példa
Az alábbi kódrészlet a CA2019 megsértését mutatja be:
class C
{
[ThreadStatic]
private static Object obj = new();
}
Class C
<ThreadStatic>
Private Shared obj As New Object()
End Class
A következő kódrészlet bemutatja, hogyan hárítható el a szabálysértés:
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
Mikor kell letiltani a figyelmeztetéseket?
Nyugodtan el lehet tiltani a szabály figyelmeztetését, de az alkalmazás váratlan viselkedést mutathat.