Sdílet prostřednictvím


Compilerfehler CS0120

Aktualisiert: November 2007

Fehlermeldung

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 Feld, eine Methode oder Eigenschaft verwenden zu können, das bzw. die nicht statisch ist, müssen Sie zuerst eine Objektinstanz erstellen. Weitere Informationen zu statischen Methoden finden Sie unter Statische Klassen und statische Klassenmember (C#-Programmierhandbuch). Weitere Informationen über das Erstellen von Klasseninstanzen finden Sie unter Instanzkonstruktoren (C#-Programmierhandbuch).

Im folgenden Beispiel wird CS0120 generiert:

// 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;
   }
}

CS0120 wird auch ausgegeben, wenn eine nicht statische Methode aus einer statischen Methode aufgerufen wird, wie im Folgenden zu sehen:

// 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()
   {
   }
}

Entsprechend kann eine statische Methode nur dann eine Instanzenmethode aufrufen, wenn Sie ihr explizit eine Instanz der Klasse zuweisen, wie im Folgenden zu sehen:

// 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 auch

Referenz

Klassen und Strukturen (C#-Programmierhandbuch)