CA1862: A "StringComparison" metódus túlterhelésének használata a kis- és nagybetűk megkülönböztetésére vonatkozó sztringek összehasonlításához
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1862 |
Cím | A "StringComparison" metódus túlterhelése a kis- és nagybetűk érzéketlen sztring-összehasonlításának végrehajtásához |
Kategória | Teljesítmény |
A javítás kompatibilitástörő vagy nem törik | Nem törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Javaslatként |
Ok
A Kód két sztringet hasonlít össze kis- és nagybetűk szempontjából érzéketlen módon az első hívássalToLower(), ToLowerInvariant()ToUpper()vagy ToUpperInvariant() egy vagy mindkét sztringgel.
Szabály leírása
Kódhívások ToLower()ToLowerInvariant(), vagy ToUpper()ToUpperInvariant()foglalások végrehajtásakor. Ha a metódusok meghívásának egyetlen oka a kis- és nagybetűk közötti érzéketlen sztringek összehasonlítása vagy keresése, a foglalás szükségtelen. Ehelyett meghívhat egy sztring-összehasonlító metódust, amely egy értéket vesz igénybe StringComparison , és megadja az *IgnoreCase
egyik értéket.
Szabálysértések kijavítása
Távolítsa el a , ToLower()ToLowerInvariant()ToUpper()vagy ToUpperInvariant(), hívását, és hívja meg valamelyik StringComparer metódust, vagy az alábbi metódusok egyikét, amely argumentumot StringComparison vesz fel:
- String.Compare(String, String, StringComparison)
- String.Contains(String, StringComparison)
- String.EndsWith(String, StringComparison)
- String.Equals(String, StringComparison)
- String.IndexOf
- String.LastIndexOf
- String.Replace(String, String, StringComparison)
- String.StartsWith(String, StringComparison)
- Compare(Uri, Uri, UriComponents, UriFormat, StringComparison)
- StringSegment.Compare(StringSegment, StringSegment, StringComparison)
- StringSegment.EndsWith(String, StringComparison)
- StringSegment.Equals
- StringSegment.StartsWith(String, StringComparison)
Feljegyzés
- Ha úgy módosítja a kódot, hogy egy argumentumot StringComparison igénylő túlterhelést használjon, az apró módosításokat okozhat a viselkedésben. Ha ezt a módosítást végrehajtja, vagy elfogadja a Visual Studio villanykörte javaslatát, fontos alapos tesztelést végeznie.
- Ha a sztringeket nem kell kulturálisan érzékeny módon összehasonlítani, fontolja meg a továbbítást StringComparison.OrdinalIgnoreCase.
Példa
Az alábbi példa a szabály megsértését mutatja be:
string s1 = "aBc";
string s2 = "aBC";
int _ = s1.ToUpper().CompareTo(s2.ToUpper());
Dim s1 As String = "aBc"
Dim s2 As String = "aBC"
Dim i As Integer = s1.ToUpper().CompareTo(s2.ToUpper())
Az alábbi példa a szabálysértést kijavító kódot mutatja be:
string s1 = "aBc";
string s2 = "aBC";
int _ = StringComparer.CurrentCultureIgnoreCase.Compare(s1, s2);
Dim s1 As String = "aBc"
Dim s2 As String = "aBC"
Dim i As Integer = StringComparer.CurrentCultureIgnoreCase.Compare(s1, s2)
Mikor kell letiltani a figyelmeztetéseket?
Ha a teljesítmény nem okoz problémát, nyugodtan el lehet tiltani a szabály figyelmeztetéseit.
Az Entity Framework Core (EF Core) használata esetén sztring összehasonlításával tiltsa le ezt a szabályt olyan forgatókönyvek esetében, ahol egy adatbázist kérdez le. Az EF Core kivételt jelent, ha olyan metódust használ, amely String.Equals(String, StringComparison) argumentumot StringComparison vesz igénybe, mivel az nem fordítja le az ilyen lekérdezéseket AZ SQL-be. További információ: A beépített .NET-sztringműveletek fordítása.
Figyelmeztetés mellőzése
Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.
#pragma warning disable CA1862
// The code that's violating the rule is on this line.
#pragma warning restore CA1862
Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none
a konfigurációs fájlban.
[*.{cs,vb}]
dotnet_diagnostic.CA1862.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: