CA1311: Ange en kultur eller använd en invariant version
Property | Värde |
---|---|
Regel-ID | CA1311 |
Title | Ange en kultur eller använd en invariant version |
Kategori | Globalisering |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
Ett anrop görs till eller String.ToLower() utan att String.ToUpper() ange en kultur.
Regelbeskrivning
Ange en kultur eller använd en invariant kultur för att undvika implicit beroende av den aktuella kulturen när du anropar ToUpper
eller ToLower
. Att använda en invariant kultur ger konsekventa resultat oavsett kulturen i ett program.
Så här åtgärdar du överträdelser
I stället för att anropa parameterlösa String.ToUpper() eller String.ToLower() metoder anropar ToUpper(CultureInfo) eller ToUpperInvariant(), eller ToLower(CultureInfo) eller ToLowerInvariant().
Exempel
Följande kodfragment visar ett brott mot regeln CA1311:
string s = "hello";
s = s.ToLower();
Dim s As String = "hello"
s.ToLower()
Följande kodfragment åtgärdar överträdelsen:
string s = "hello";
s = s.ToLowerInvariant();
Dim s As String = "hello"
s.ToLowerInvariant()
När du ska ignorera varningar
Det är säkert att ignorera en varning från den här regeln om du är säker på att det aldrig kommer att Thread.CurrentCulture ändras.
Ignorera en varning
Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.
#pragma warning disable CA1311
// The code that's violating the rule is on this line.
#pragma warning restore CA1311
Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none
i konfigurationsfilen.
[*.{cs,vb}]
dotnet_diagnostic.CA1311.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.