Megosztás a következőn keresztül:


CA1826: Tulajdonság használata a Linq Enumerable metódus helyett

Tulajdonság Érték
Szabályazonosító CA1826
Cím Tulajdonság használata a Linq Enumerable metódus helyett
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 Enumerable LINQ metódust olyan típuson használták, amely egy egyenértékű, hatékonyabb tulajdonságot támogat.

Szabály leírása

Ez a szabály jelzi, hogy a Enumerable LINQ metódus olyan típusok gyűjteményeit hívja meg, amelyek egyenértékű, de hatékonyabb tulajdonságokkal rendelkeznek ugyanazon adatok lekéréséhez.

Ez a szabály olyan gyűjteménytípusokat elemez, amelyek implementálják IReadOnlyList<T> , de nem IList<T>.

Ez a szabály az alábbi metódusokra irányuló hívásokat jelöli az alábbi gyűjteménytípusokon:

Az elemzett gyűjteménytípusok és metódusok a jövőben további esetekre is kiterjeszthetők.

Szabálysértések kijavítása

A szabálysértés kijavításához cserélje le a metódushívást tulajdonsághozzáférésre Enumerable . A következő két kódrészlet például a szabály megsértését és a hiba elhárítását mutatja be:

using System;
using System.Collections.Generic;
using System.Linq;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list.First());
        Console.Write(list.Last());
        Console.Write(list.Count());
    }
}
using System;
using System.Collections.Generic;

class C
{
    public void M(IReadOnlyList<string> list)
    {
        Console.Write(list[0]);
        Console.Write(list[list.Count - 1]);
        Console.Write(list.Count);
    }
}

Tipp.

Ehhez a szabályhoz kódjavítás érhető el a Visual Studióban. A használathoz helyezze a kurzort a szabálysértésre, és nyomja le a Ctrl+ billentyűt. (pont). Válassza az Indexelő használata lehetőséget a megjelenő lehetőségek listájában.

Code fix for CA1826 - Use indexer

Mikor kell letiltani a figyelmeztetéseket?

Ha nem aggódik az adott Enumerable metódushívások teljesítményre gyakorolt hatása miatt, nyugodtan letilthatja a szabály megsértését.

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

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

További információ: Kódelemzési figyelmeztetések letiltása.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

FirstOrDefault és LastOrDefault metódusok kizárása

Ezt a szabályt úgy konfigurálhatja, hogy kizárja a metódusokat és Enumerable.LastOrDefault a metódusokat az Enumerable.FirstOrDefault elemzésből. Érdemes lehet kizárni ezeket a metódusokat, ha az olvashatóság aggodalomra ad okot, mivel a lecserélni kívánt kód nem könnyen olvasható. A metódusok kizárásához adja hozzá a következő kulcs-érték párokat a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CA1826.exclude_ordefault_methods = true

Kapcsolódó információk