1

为什么会这样编译?

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

方法不应该abstract不允许实现吗,因为它们必须在以后实现?

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

4

2 回答 2

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 )

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

于 2013-06-05T01:34:14.110 回答
3

这不会编译:

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

于 2013-06-05T01:30:44.640 回答