CA2019: ThreadStatic
a mezők nem használhatnak beágyazott inicializálást
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 8-ban | 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.
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: