C# VS 2010 编辑时报错,但编译运行成功

发布于 2024-10-31 19:54:19 字数 283 浏览 0 评论 0原文

我有 CodeDom 生成的可选参数。例如:

class Square
{
    public Square([Optional()] int side) { }
}

我有一个调用语句:

Square sq = new Square();

当我编辑时,我的错误列表窗口显示: 'Square' 不包含带有 0 个参数的构造函数'

但它编译并运行成功。如何消除“错误列表”窗口中的错误?谢谢!

I have optional parameters generated by CodeDom. For example:

class Square
{
    public Square([Optional()] int side) { }
}

I have a call statement:

Square sq = new Square();

While I'm editing, my Error List window shows:
'Square' does not contain a constructor that takes 0 arguments'

But it compiles and runs successfully. How can I get rid of the error in 'Error List' window? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苏佲洛 2024-11-07 19:54:19

您看到的是 IDE 实时语义错误检查和实际运行的编译器之间的差异。实时语义检查使用 C# 编译器,但与它不具有 100% 的一致性,并且在该语言的极端情况下可能会产生误报。

要摆脱这种情况,请禁用实时语义检查

  • 工具 ->选项
  • 文本编辑器 -> C#->高级
  • 取消选中“显示实时语义错误”

解决此问题的另一种方法是对可选值使用实际 C# 支持的语法

public Square(int side = 0) { }

What you're seeing is the difference between IDE live semantic error checking and the actual compiler running. The live semantic checking uses the C# compiler but doesn't have 100% parity with it and it can produce false positives in corner cases of the language.

To get rid of this disable live semantic checking

  • Tools -> Options
  • Text Editor -> C# -> Advanced
  • Uncheck "Show live semantic errors"

Another way to fix this is to use the actual C# supported syntax for optional values

public Square(int side = 0) { }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文