这段代码在框架 3.5 项目中的 VS 2010 中编译正常(我三次检查)
public LoggingClient(string uri = "net.msmq://localhost/logging"){...}
为什么?我在 C# 4 规范(doc 版本)第 21.1 节中没有看到任何内容表明这应该是向后兼容的。我怎么没有编译错误?在某些情况下这会静默失败吗?
这段代码在框架 3.5 项目中的 VS 2010 中编译正常(我三次检查)
public LoggingClient(string uri = "net.msmq://localhost/logging"){...}
为什么?我在 C# 4 规范(doc 版本)第 21.1 节中没有看到任何内容表明这应该是向后兼容的。我怎么没有编译错误?在某些情况下这会静默失败吗?
项目+属性,构建选项卡,向下滚动,高级。如果您希望保持源代码兼容性,可以将语言版本更改为“C# 3.0”。
但是,是的,您在 VS2010 中使用的是 C# 4.0 编译器,无论您使用的是什么目标 .NET 版本。编译器的输出 IL 在 .NET 4.0 中没有改变。不,您不能使用dynamic,它需要一个仅支持 .NET 4.0 的程序集(Microsoft.CSharp.dll)
可选参数只是语法糖 - 如果您没有在调用站点指定它,编译器会将其填充为默认值。不依赖 .NET 框架本身来做任何事情。