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:
- Wenn die Methode als abstrakte Methode mit
abstract
markiert ist - Wenn die Methode als externe Methode mit
extern
markiert ist - Wenn die Methode als partielle Methode mit
partial
markiert ist
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.
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für