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 objektreferens krävs för det icke-statiska fältet, metoden eller egenskapen "member"
För att kunna använda ett icke-statiskt fält, en metod eller en egenskap måste du först skapa en objektinstans. Mer information om statiska metoder finns i Statiska klasser och Statiska klassmedlemmar. Mer information om hur du skapar instanser av klasser finns i Instanskonstruktorer.
Exempel 1
Följande exempel genererar CS0120:
// CS0120_1.cs
public class MyClass
{
// Non-static field.
public int i;
// Non-static method.
public void Method() { }
// Non-static property.
public int Prop
{
get
{
return 1;
}
}
public static void Main()
{
i = 10; // CS0120
Method(); // CS0120
int p = Prop; // CS0120
}
}
Åtgärda det här felet genom att först skapa en instans av klassen:
// CS0120_1.cs
public class MyClass
{
// Non-static field.
public int i;
// Non-static method.
public void Method() { }
// Non-static property.
public int Prop
{
get
{
return 1;
}
}
public static void Main()
{
var mc = new MyClass();
mc.i = 10;
mc.Method();
int p = mc.Prop;
}
}
Exempel 2
CS0120 genereras också om det finns ett anrop till en icke-statisk metod från en statisk metod enligt följande:
// CS0120_2.cs
public class MyClass
{
public void Method() { }
public static void Main()
{
Method(); // CS0120
}
}
Åtgärda det här felet genom att först skapa en instans av klassen:
// CS0120_2.cs
public class MyClass
{
public void Method() { }
public static void Main()
{
var mc = new MyClass();
mc.Method();
}
}
Exempel 3
På samma sätt kan en statisk metod inte anropa en instansmetod om du inte uttryckligen ger den en instans av klassen enligt följande:
// CS0120_3.cs
using System;
public class MyClass
{
public static void Main()
{
DoIt("Hello There"); // CS0120
}
private void DoIt(string sText)
{
Console.WriteLine(sText);
}
}
Du kan också lägga till nyckelordet static i metoddefinitionen för att åtgärda det här felet:
// CS0120_3.cs
using System;
public class MyClass
{
public static void Main()
{
DoIt("Hello There");
}
private static void DoIt(string sText)
{
Console.WriteLine(sText);
}
}