Share via


CA1310: Ange StringComparison för korrekthet

Property Värde
Regel-ID CA1310
Rubrik Ange StringComparison för korrekthet
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 använder en metodöverbelastning som inte anger en StringComparison parameter och använder kulturspecifik strängjämförelse som standard. Beteendet varierar därför beroende på den aktuella användarens nationella inställningar.

Regelbeskrivning

En strängjämförelsemetod som använder kulturspecifik strängjämförelse som standard kan ha potentiellt oavsiktligt körningsbeteende som inte matchar användarens avsikt. Vi rekommenderar att du använder överlagringen med parametern StringComparison för korrekthet och tydlighet i avsikten.

Den här regeln flaggar strängjämförelsemetoder som använder det kulturspecifika StringComparison värdet som standard. Mer information finns i Strängjämförelser som använder den aktuella kulturen.

Kommentar

Om du vill se överträdelser för alla strängjämförelsemetoder, oavsett vilken standardsträngjämförelse som används av metoden, använder du CA1307: Ange StringComparison för tydlighetens skull i stället.

Så här åtgärdar du överträdelser

Om du vill åtgärda ett brott mot den här regeln ändrar du metoder för strängjämförelse till överlagringar som accepterar StringComparison uppräkningen som en parameter. Ä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 inte är avsett att lokaliseras.

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 CA1310
// The code that's violating the rule is on this line.
#pragma warning restore CA1310

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.CA1310.severity = none

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även