Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En statisk lokal funktion får inte innehålla en referens till "this" eller "base".
Nyckelordet static i en lokal funktion hindrar den lokala funktionen från att komma åt tillståndet för överordnade instansmetoder eller instansfält.
Det här felet anger att den lokala funktionen har åtkomst till instansmedlemmar av den innehållande typen.
Exempel
Följande exempel genererar CS8422:
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);
}
}
Så här åtgärdar du det här felet
Om det finns en avsikt med lokal funktion att samla in och ändra tillståndet för en överordnad bör den inte deklareras som statisk. Du kan också ta bort åtkomsten till alla instansmedlemmar.
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