CA1310: Ange StringComparison för korrekthet
Property | Värde |
---|---|
Regel-ID | CA1310 |
Title | Ange StringComparison för korrekthet |
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 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.