Freigeben über


Compilerfehler CS0501

"member function" ist nicht als abstrakt, extern oder partiell gekennzeichnet und muss daher einen Text deklarieren

Nicht abstrakte Methoden müssen über Implementierungen verfügen.

Erklärung

In C# müssen Methoden/Funktionen, die Teil einer Klasse sind, über einen „Text“ (body) oder eine Implementierung verfügen. Der Compiler muss wissen, was passieren soll, wenn diese Methoden aufgerufen werden, damit er weiß, was ausgeführt werden soll. Eine Methode ohne Text ist für den Compiler nicht akzeptabel, da er Verwechslungen über die Absicht des Codes vermeiden möchte.

Es gibt Ausnahmen von dieser Regel:

Beispiel

Im folgenden Beispiel wird CS0501 generiert:

public class MyClass
{  
   public void MethodWithNoBody();   // CS0501 declared but not defined  
}  

Dies kann durch Deklarieren eines Textkörpers (durch Hinzufügen von Klammern) behoben werden:

public class MyClass
{  
   public void MethodWithNoBody() { }   // No error; compiler now interprets as an empty method
}  

Hinweis

Wenn Sie einen Methodentext mit Klammern definieren, fügen Sie kein Semikolon hinzu. Dadurch wird der Compilerfehler CS1597 ausgelöst.

Verwenden Sie alternativ ein geeignetes Schlüsselwort, etwa beim Definieren einer abstract-Methode:

abstract class MyClass // class is abstract; classes that inherit from it will have to define MyAbstractMethod
{  
   public abstract void MyAbstractMethod();   // Compiler now knows that this method must be defined by inheriting classes.
}