Compilerfehler CS0120Compiler Error CS0120

Für das nicht statische Feld, die Methode oder die Eigenschaft "Member" ist ein Objektverweis erforderlich.An object reference is required for the nonstatic field, method, or property 'member'

Um ein nicht statisches Feld, eine Methode oder Eigenschaft verwenden zu können, müssen Sie zunächst eine Objektinstanz erstellen.In order to use a non-static field, method, or property, you must first create an object instance. Weitere Informationen zu statischen Methoden finden Sie unter Statische Klassen und statische Klassenmember.For more information about static methods, see Static Classes and Static Class Members. Weitere Informationen zum Erstellen von Klasseninstanzen finden Sie unter Instanzkonstruktoren.For more information about creating instances of classes, see Instance Constructors.

Im folgenden Beispiel wird CS0120 generiert:The following sample generates CS0120:

// CS0120_1.cs  
public class MyClass  
{  
   // Non-static field  
   public int i;   
   // Non-static method  
   public void f(){}  
   // Non-static property  
   int Prop  
   {  
      get   
      {  
         return 1;   
      }  
   }  

   public static void Main()  
   {  
      i = 10;   // CS0120  
      f();   // CS0120  
      int p = Prop;   // CS0120  
      // try the following lines instead  
      // MyClass mc = new MyClass();  
      // mc.i = 10;  
      // mc.f();  
      // int p = mc.Prop;  
   }  
}  

Der Fehler CS0120 wird auch generiert, wenn eine statische Methode folgendermaßen eine nicht statische Methode aufruft:CS0120 will also be generated if there is a call to a non-static method from a static method, as follows:

// CS0120_2.cs  
// CS0120 expected  
using System;  

public class MyClass  
{  
   public static void Main()  
   {  
      TestCall();   // CS0120  
      // To call a non-static method from Main,  
      // first create an instance of the class.  
      // Use the following two lines instead:  
      // MyClass anInstanceofMyClass = new MyClass();  
      // anInstanceofMyClass.TestCall();  
   }  

   public void TestCall()  
   {  
   }  
}  

Genauso kann eine statische Methode keine Instanzmethode aufrufen, es sei denn, Sie geben ihr wie folgt explizit eine Instanz der Klasse:Similarly, a static method cannot call an instance method unless you explicitly give it an instance of the class, as follows:

// CS0120_3.cs  
using System;  

public class MyClass  
{  
   public static void Main()  
   {  
      do_it("Hello There");   // CS0120  
   }  

   private void do_it(string sText)  
   // You could also add the keyword static to the method definition:  
   // private static void do_it(string sText)  
   {  
      Console.WriteLine(sText);  
   }  
}  

Siehe auchSee Also

Klassen und StrukturenClasses and Structs