CA1309: Använd ordningstalssträngKomparison
Property | Värde |
---|---|
Regel-ID | CA1309 |
Title | Använda ordningstalssträngComparison |
Kategori | Globalisering |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | Nej |
Orsak
En strängjämförelseåtgärd som är icke-linguistisk anger inte parametern StringComparison till antingen Ordinal eller OrdinalIgnoreCase.
Regelbeskrivning
Många strängåtgärder, viktigast av System.String.Compare allt metoderna och System.String.Equals , ger nu en överlagring som accepterar ett System.StringComparison uppräkningsvärde som en parameter.
När du anger antingen StringComparison.Ordinal eller StringComparison.OrdinalIgnoreCase är strängjämförelsen icke-språklig. Det vill: de funktioner som är specifika för det naturliga språket ignoreras när jämförelsebeslut fattas. Om du ignorerar naturligt språk innebär det att besluten baseras på enkla bytejämförelser och inte på hölje- eller ekvivalenstabeller som parametriseras efter kultur. Genom att uttryckligen ange parametern till antingen StringComparison.Ordinal eller StringComparison.OrdinalIgnoreCase får koden ofta hastighet, ökar korrektheten och blir mer tillförlitlig.
Så här åtgärdar du överträdelser
Om du vill åtgärda ett brott mot den här regeln ändrar du strängjämförelsemetoden till en överlagring som accepterar System.StringComparison uppräkningen som en parameter och anger antingen Ordinal eller OrdinalIgnoreCase. Ändra String.Compare(str1, str2)
till exempel till String.Compare(str1, str2, StringComparison.Ordinal)
.
När du ska ignorera varningar
Det är säkert att ignorera en varning från den här regeln när biblioteket eller programmet är avsett för en begränsad lokal målgrupp, eller när semantiken i den aktuella kulturen ska användas.
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 CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309
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.CA1309.severity = none
Mer information finns i Så här utelämnar du kodanalysvarningar.