Share via


CA1307: Ange StringComparison för tydlighetens skull

Property Värde
Regel-ID CA1307
Rubrik Ange StringComparison för tydlighetens skull
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 någon StringComparison parameter.

Regelbeskrivning

Många strängjäxningsåtgärder ger en överlagring som accepterar ett StringComparison uppräkningsvärde som en parameter.

När det finns en överlagring som tar en StringComparison parameter bör den användas i stället för en överlagring som inte tar den här parametern. Genom att uttryckligen ange den här parametern blir koden ofta tydligare och enklare att underhålla. Mer information finns i Ange strängjämförelser explicit.

Kommentar

Den här regeln tar inte hänsyn till det standardvärde StringComparison som används av jämförelsemetoden. Därför kan det vara potentiellt bullrigt för metoder som använder Ordinal strängjämförelsen som standard och användaren som är avsedd att använda det här standardjämförelseläget. Om du bara vill se överträdelser för kända strängmetoder som använder kulturspecifik strängjämförelse som standard använder du CA1310: Ange StringComparison för korrekthet 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 str1.IndexOf(ch1) till exempel till str1.IndexOf(ch1, StringComparison.Ordinal).

När du ska ignorera varningar

Det är säkert att utelämna en varning från den här regeln när avsiktens klarhet inte krävs. Testkoden eller icke-localizable-koden kanske till exempel inte kräver den.

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

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

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

Se även