Share via


CA1309: Använd ordningstalssträngKomparison

Property Värde
Regel-ID CA1309
Rubrik Använda ordningstalssträngComparison
Kategori Globalisering
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 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.

Se även