CA1309: Använd ordningstalssträngKomparison

Egenskap Värde
Regel-ID CA1309
Title ** Använd ordinal StringComparison
Kategori Globalisering
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

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ängoperationer, särskilt metoderna System.String.Compare och System.String.Equals, erbjuder nu en överlagrad funktion som accepterar ett System.StringComparison-uppräkningsvärde som 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