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

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

这个问题不太可能帮助任何 future 的访客;它只与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the help center .




8年前关闭。




为什么会这样编译?

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

不应该 abstract方法不允许实现,因为它们以后必然会实现?

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

最佳答案

有时,Visual Studio IDE 根本无法注册错误,直到它被刷新(例如通过尝试运行程序)。一个完美的示例采用下面的代码,然后在两个“public”之后手动添加单词 Abstract,它不会立即注册为错误。这只是 Visual Studio 中的一个小故障。

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

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

Error 1 ... cannot declare a body because it is marked abstract



为什么会这样编译?它没有。 Visual Studio 和可能许多其他 IDE 在动态注册错误时遇到问题,具体取决于您输入错误的方式。

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

Because an abstract method declaration provides no actual implementation, there is no method body; the method declaration simply ends with a semicolon and there are no braces ({ }) following the signature.

关于c# - 为什么在我实现抽象方法时 Visual Studio 不将其标记为错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930092/

相关文章:

c# - Microsoft Bot Framework,缺少子类型

c# - 将命令行参数传递给我的应用程序的已运行实例

c# - 需要建议 - 如何编写绘图程序

c# - 在另一个接口(interface) C# 中使用 List<interface>

c# - 在 VS2010 中或通过 MsBuild 命令行编译解决方案时生成的代码不同

visual-studio - 无法使用 CodeTaskFactory 创建内联构建任务(构建错误 MSB3758 和 CS0012)

c# - 无法合并两个 NET Standard 项目中的 NuGet 包传递依赖项版本

c# - ASP.NET MVC 上传文件

visual-studio-2010 - 在 Visual Studios 2010 Express C++ 中导入 OpenCV2.3 库时出现 Unresolved external symbol 错误

c++ - 为什么 LoadString 从资源中返回连接的字符串?