5

这段代码在框架 3.5 项目中的 VS 2010 中编译正常(我三次检查)

    public LoggingClient(string uri = "net.msmq://localhost/logging"){...}

为什么?我在 C# 4 规范(doc 版本)第 21.1 节中没有看到任何内容表明这应该是向后兼容的。我怎么没有编译错误?在某些情况下这会静默失败吗?

4

2 回答 2

8

项目+属性,构建选项卡,向下滚动,高级。如果您希望保持源代码兼容性,可以将语言版本更改为“C# 3.0”。

但是,是的,您在 VS2010 中使用的是 C# 4.0 编译器,无论您使用的是什么目标 .NET 版本。编译器的输出 IL 在 .NET 4.0 中没有改变。不,您不能使用dynamic,它需要一个仅支持 .NET 4.0 的程序集(Microsoft.CSharp.dll)

于 2010-07-09T03:03:51.377 回答
3

可选参数只是语法糖 - 如果您没有在调用站点指定它,编译器会将其填充为默认值。不依赖 .NET 框架本身来做任何事情。

另请参阅您可以在面向 .NET 3.5 的代码中使用可选参数吗?

于 2010-07-09T02:38:20.837 回答