为什么要编译?
public abstract class Thing
{
public abstract void ActualWork()
{
Console.WriteLine("this should be impossible to execute");
}
}
abstract
方法不应该禁止实施,因为它们必须在以后实施吗?
根据CodeCamper的评论,Visual Studio没有将其标记为错误。对我来说很奇怪,因为它本身没有锁定,它仍然注意到其他错误而不是那个错误。
答案 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)
这不编译:
错误:'无法声明正文,因为它标记为抽象'