C#VS 2010在编辑时报告错误,但它编译并运行成功
我有由CodeDom生成的可选参数。例如:C#VS 2010在编辑时报告错误,但它编译并运行成功,c#,visual-studio,visual-studio-2010,optional-parameters,C#,Visual Studio,Visual Studio 2010,Optional Parameters,我有由CodeDom生成的可选参数。例如: class Square { public Square([Optional()] int side) { } } 我有一份通话声明: Square sq = new Square(); 编辑时,“我的错误列表”窗口显示: “Square”不包含接受0个参数的构造函数” 但它编译并运行成功。如何消除“错误列表”窗口中的错误?谢谢 您看到的是IDE live语义错误检查与实际运行的编译器之间的差异。实时语义检查使用C#编译器,但与它没有100
class Square
{
public Square([Optional()] int side) { }
}
我有一份通话声明:
Square sq = new Square();
编辑时,“我的错误列表”窗口显示:
“Square”不包含接受0个参数的构造函数”
但它编译并运行成功。如何消除“错误列表”窗口中的错误?谢谢 您看到的是IDE live语义错误检查与实际运行的编译器之间的差异。实时语义检查使用C#编译器,但与它没有100%的奇偶校验,并且在语言的极端情况下可能产生误报 要摆脱此问题,请禁用实时语义检查
- 工具->选项
- 文本编辑器->C#->高级
- 取消选中“显示实时语义错误”
public Square(int side = 0) { }
我可以在VS2010中重新创建这个特定问题的唯一方法是从Square类中省略using子句。。。这会导致JIT编译器/intellisense忽略构造函数上的可选()修饰符。。。添加using子句,intellisense将正常运行(即:无错误消息)。@Aidanapword请确保已启用实时语义错误。事实上,我在VS 2010中重新编写了这个程序:而不是使用“互操作”可选标记。。。但是在Dona的上下文中可能需要它们(即:她的“Square”类IRL是否从另一个平台调用?@Aidanapword不应该成为问题,因为编译器在使用支持的可选语法时会自动向参数添加
Optional
fromSystem.Runtime.InteropServices
,感谢您的响应。CodeDom只支持可选参数的可选属性语法,而不支持正常语法。@完成是的,这是一个可悲的事实。CodeDom通常跟不上新的语言特性。我认为最好的办法是禁用实时语义错误