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

时间:2013-06-05 01:23:44

标签: c# visual-studio-2010 visual-studio abstract

为什么要编译?

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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

  

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

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

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

  

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

答案 1 :(得分:3)

这不编译:

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