为什么Visual Studio在实现抽象方法时不将其标记为错误?

Nac*_*ica 1 c# abstract visual-studio-2010 visual-studio

为什么编译?

public abstract class Thing
{
    public abstract void ActualWork()
    {
        Console.WriteLine("this should be impossible to execute");
    }
}
Run Code Online (Sandbox Code Playgroud)

abstract方法是否应该禁止实施,因为它们必须在以后实施?

根据CodeCamper的评论,Visual Studio没有将其标记为错误.对我来说很奇怪,因为它本身没有锁定,它仍然注意到其他错误不是那个.

Cod*_*per 7

有时,Visual Studio IDE在刷新之前无法注册错误,例如尝试运行程序.一个完美的例子取下面的代码,然后在"public"之后手动添加单词Abstract,它不会立即注册为错误.这只是Visual Studio中的一个小故障.

public class Thing
    {
        public void ActualWork()
        {
            Console.WriteLine("this should be impossible to execute");
        }
    }
Run Code Online (Sandbox Code Playgroud)

即使它在运行程序时没有显示错误,您也会收到以下错误:

错误1 ...无法声明正文,因为它标记为抽象

为什么编译?它没有.Visual Studio以及许多其他IDE在运行时都会出现问题,具体取决于您输入错误的方式.

MSDN(http://msdn.microsoft.com/en-us/library/sf985hc5 ( v=vs.71 ) .aspx)

因为抽象方法声明没有提供实际的实现,所以没有方法体; 方法声明只以分号结束,签名后面没有大括号({}).