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


CA1859: Ha lehetséges, használjon konkrét típusokat a jobb teljesítmény érdekében

Tulajdonság Érték
Szabályazonosító CA1859
Cím Ha lehetséges, használjon betontípusokat a jobb teljesítmény érdekében
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Bevezetett verzió .NET 8
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

A kód felülettípusokat vagy absztrakt típusokat használ, ami szükségtelen felületi hívásokhoz vagy virtuális hívásokhoz vezet.

Szabály leírása

Ez a szabály azt javasolja, hogy lehetőség szerint frissítse az adott helyi változók, mezők, tulajdonságok, metódusparaméterek és metódus-visszatérési típusok típusát az interfészről vagy az absztrakt típusról a konkrét típusokra. A konkrét típusok használata jobb minőségű generált kódot eredményez azáltal, hogy minimalizálja a virtuális vagy felületi küldési többletterhelést, és lehetővé teszi a formázást.

Ez a szabály csak akkor jelenti a szabálysértéseket, ha vannak olyan virtuális hívások vagy felületi hívások, amelyek konkrét típus használatával ténylegesen elkerülhetők.

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

Frissítse a típusokat a szabály által javasolt módon. A típus módosítása általában nincs hatással a kód viselkedésére, de javítja a teljesítményét.

Példa

A következő kódrészlet a CA1859 megsértése esetén jelenik meg:

abstract class A
{
    public virtual void M() { }
}

sealed class B : A
{ }

internal class C
{
    private readonly A _a = new B();

    public void Trigger()
    {
        // This performs a virtual call because
        // _a is defined as an abstract class.
        _a.M();
    }
}

A következő kódrészlet kijavítja a szabálysértést:

abstract class A
{
    public virtual void M() { }
}

sealed class B : A
{ }

internal class C
{
    private readonly B _b = new B();

    public void Trigger()
    {
        _b.M();
    }
}

Mikor kell letiltani a figyelmeztetéseket?

Nyugodtan el lehet tiltani a figyelmeztetést, ha a teljesítmény nem okoz gondot.

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

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

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