gpt4 book ai didi

c# - C# 6.0 是否适用于 .NET 4.0?

转载 作者:IT王子 更新时间:2023-10-29 03:28:36 25 4
gpt4 key购买 nike

我创建了一个示例项目,使用 C#6.0 好东西 - 以 null 传播和属性初始化为例,设置目标版本 .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);
}
}

这是否意味着我可以为面向 .NET 4.0 的软件使用 C# 6.0 功能?有什么限制或缺点吗?

最佳答案

是的(大部分)。 C# 6.0 需要新的 Roslyn 编译器,但新编译器可以针对较旧的框架版本进行编译。这仅限于不需要框架支持的新功能。

例如,虽然您可以在早期版本的 .Net 中使用 C# 6.0 中的字符串插值功能(因为它会调用 string.Format):

int i = 3;
string s = $"{i}";

您需要 .Net 4.6 才能将其与 IFormattable 一起使用,因为只有新框架版本添加了 System.FormattableString:

int i = 3;
IFormattable s = $"{i}";

您提到的案例不需要框架中的类型即可工作。因此编译器完全有能力支持旧框架版本的这些特性。

关于c# - C# 6.0 是否适用于 .NET 4.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28921701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com