C#VS 2010在编辑时报告错误,但它编译并成功运行

dls*_*sou 3 c# optional-parameters visual-studio-2010 visual-studio

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

class Square
{
    public Square([Optional()] int side) { }
}
Run Code Online (Sandbox Code Playgroud)

我有一个电话声明:

Square sq = new Square();
Run Code Online (Sandbox Code Playgroud)

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

但它编译并成功运行.如何摆脱"错误列表"窗口中的错误?谢谢!

Jar*_*Par 5

您所看到的是IDE实时语义错误检查与实际编译器运行之间的区别.实时语义检查使用C#编译器,但与它没有100%的奇偶校验,并且它可以在语言的极端情况下产生误报.

要摆脱这种禁用实时语义检查

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

另一种解决方法是使用实​​际的C#支持语法来表示可选值

public Square(int side = 0) { }
Run Code Online (Sandbox Code Playgroud)