CS8422-et eredményező fordítási hiba

A statikus helyi függvények nem tartalmazhatnak "erre" vagy "alapra" mutató hivatkozást.

A static helyi függvény kulcsszója megakadályozza, hogy a helyi függvény hozzáférjen a szülőpéldány-metódusok vagy példányok mezőinek állapotához.
Ez a hiba azt jelzi, hogy a helyi függvény hozzáfér az adott típusú példány tagjaihoz.

Példa

A következő minta a CS8422-t hozza létre:

public class C
{
    private int counter = 1;
    public void IncreaseCounter()
    {
        static void localFunc(int addition)
        {
            this.counter += addition;   // CS8422 due to reference to 'this'
            base.ToString();            // CS8422 due to reference to 'base'

            // Also for implicit 'this' or 'base' references:
            counter += addition;   // CS8422 due to implicit reference to 'this'
            ToString();            // CS8422 due to implicit reference to 'base'
        }
        localFunc(10);
        Console.WriteLine(this.counter);
    }
}

A hiba kijavítása

Ha a helyi függvény célja egy szülő állapotának rögzítése és módosítása, akkor nem szabad statikusnak minősíteni. A példánytagok hozzáférését is eltávolíthatja.

public class C
{
    private int counter = 1;
    public void IncreaseCounter()
    {
        void localFunc(int addition)
        {
            counter += addition;
            ToString();
        }
        localFunc(10);
        Console.WriteLine(this.counter);
    }
}

public class Program
{
    public void Main()
    {
        C c = new();
        c.IncreaseCounter();
    }
}

// Output:
// 11

Lásd még