【发布时间】:2015-05-09 09:51:23
【问题描述】:
我创建了一个示例项目,使用 C#6.0 的好东西 - 以空值传播和属性初始化为例,设置目标版本 .NET 4.0 并且它...有效。
public class Cat
{
public int TailLength { get; set; } = 4;
public Cat Friend { get; set; }
public string Mew() { return "Mew!"; }
}
class Program
{
static void Main(string[] args)
{
var cat = new Cat {Friend = new Cat()};
Console.WriteLine(cat?.Friend.Mew());
Console.WriteLine(cat?.Friend?.Friend?.Mew() ?? "Null");
Console.WriteLine(cat?.Friend?.Friend?.TailLength ?? 0);
}
}
- Wikipedia says C# 6.0 的 .NET 框架是 4.6。
- This question(和 Visual Studio 2015 CTP 测试)说 CLR 版本是 4.0.30319.0。
- This MSDN page 表示 .NET 4、4.5、4.5.2 使用 CLR 4。没有任何关于 .NET 4.6 的信息。
这是否意味着我可以在面向 .NET 4.0 的软件中使用 C# 6.0 功能?有什么限制或缺点吗?
【问题讨论】:
-
.Net 版本 2.0 - 3.5 使用 CLR v2.0。较新的版本使用 CLR v4.0。
-
请记住,明智地进行优化:您正在像这样为每只猫添加单独的 if-null-check
-
天哪。我一直在开发针对 v4.6 的 WCF,只是为了“提醒”生产服务器要到 2018 年才能升级。我认为一个月的工作需要几天的重构。五分钟后完成。谢谢微软! :D