非抽象方法必须具有实现。

在 C# 中,属于类的方法/函数必须具有“主体”或实现。 编译器需要知道调用这些方法时应发生的情况,以便它知道要执行哪些操作。 编译器无法接受没有主体的方法,因为它希望避免混淆代码的意图。

此规则存在例外情况:

  • 将该方法标记为 abstract 抽象方法
  • 将该方法标记为 extern 外部方法
  • 将该方法标记为 partial 部分方法
  • 下面的示例生成 CS0501:

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

    这可以通过声明主体(通过添加括号)来解决:

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

    或者,使用适当的关键字,例如定义 abstract 方法:

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