CA1870: Gyorsítótárazott "SearchValues" példány használata
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1870 |
Cím | Gyorsítótárazott "SearchValues" példány használata |
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
Egy IndexOfAny
vagy ContainsAny
több állandó értékkel rendelkező metódust olyan módon hívunk meg, amely hasznos lehet a használatban SearchValues .
A szabály nem jelöli meg az legfeljebb öt értéket használó hívásokat, mivel ezek már optimális implementációt használnak.
Szabály leírása
A gyorsítótárazott SearchValues<T> példányok használata hatékonyabb, mint az értékek közvetlen vagy ContainsAny
közvetlen átadásaIndexOfAny
.
Szabálysértések kijavítása
Hozzon létre és gyorsítótárazjon egy példányt SearchValues<T> egy static readonly
mezőben, majd adja át a példányt a hívásnak vagy ContainsAny
a IndexOfAny
hívásnak.
Elérhető egy kódjavító, amely végrehajtja ezt az átalakítást.
Példa
A következő kódrészlet a CA1870 két szabálysértést mutat be:
static readonly char[] MyValues = new[] { 'a', 'b', 'c', 'x', 'y', 'z' };
static int IndexOfMyValues(ReadOnlySpan<char> text)
{
return text.IndexOfAny(MyValues);
}
static bool ContainsOnlyMyValues(ReadOnlySpan<char> text)
{
return !text.ContainsAnyExcept("abcxyz");
}
A következő kódrészlet kijavítja a szabálysértéseket:
private static readonly SearchValues<char> s_myValues = SearchValues.Create("abcxyz");
static int IndexOfMyValues(ReadOnlySpan<char> text)
{
return text.IndexOfAny(s_myValues);
}
static bool ContainsOnlyMyValues(ReadOnlySpan<char> text)
{
return !text.ContainsAnyExcept(s_myValues);
}
Ha több hívás is IndexOfAny
ugyanarra az értékkészletre vonatkozik, s_myValues
akkor újra fel kell használni.
Mikor kell letiltani a figyelmeztetéseket?
Ha a teljesítmény nem okoz problémát, nyugodtan el lehet tiltani ezt a figyelmeztetést.
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 CA1870
// The code that's violating the rule is on this line.
#pragma warning restore CA1870
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.CA1870.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: