myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Knowledge Base » FAQ » [FAQ] Für das nicht statische Feld, die Methode oder die Eigenschaft "X" ist ein Objektverweis erf.
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[FAQ] Für das nicht statische Feld, die Methode oder die Eigenschaft "X" ist ein Objektverweis erf.

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
herbivore
myCSharp.de-Poweruser/ Experte

avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 49.461
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

[FAQ] Für das nicht statische Feld, die Methode oder die Eigenschaft "X" ist ein Objektverweis erf.

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Ratsuchender,

hier geht es um die Compilerfehlermeldung CS0120:

Zitat:
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'.

und um Compilerfehlermeldungen im Allgemeinen. Auch und gerade als Anfänger ist es wichtig, Syntaxfehler selbst lösen zu können oder lösen zu lernen. Dabei hilft die auch in dieser Hinsicht sehr gute SDK-/MSDN-Doku. Gebt dazu einfach die Fehlernummer (CSnnnn) in den Index der (offline) SDK-/MSDN-Doku ein.

Zu jedem Fehler findet ihr dann eine Beschreibung des Fehlers. Normalerweise enthält diese auch ein Codebeispiel, das zeigt wie der Fehler entsteht und wie man den Code ändern muss, um den Fehler zu beheben. Besser geht es eigentlich nicht. Zumindest können wir euch normalerweise keine bessere Antwort geben als in der Doku steht. Versucht daher bitte wirklich Syntaxfehler unter Verwendung der SDK-/MSDN-Doku selbst zu beheben.

Weitere Informationen zur SDK-/MSDN-Doku findest du in  [Hinweis] Bitte schau in die SDK-/MSDN-Doku

Ich habe hier stellvertretend den häufigen Fehler "Für das nicht statische Feld, die Methode oder die Eigenschaft "Member" ist ein Objektverweis erforderlich" ausgewählt und gebe den entsprechenden Abschnitt aus der SDK-/MSND-Doku wieder:

Zitat:
Visual C#-Referenz: Fehler und Warnungen

Compilerfehler CS0120

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 finden Sie unter Instanzkonstruktoren (C#-Programmierhandbuch).

Im folgenden Beispiel wird CS0120 generiert:

C#-Code:
// 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:

C#-Code:
// 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:

C#-Code:
// 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);
   }
}

herbivore
Neuer Beitrag 07.07.2006 12:51 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 13 Jahre.
Der letzte Beitrag ist älter als 13 Jahre.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 21.08.2019 09:00