为什么 VS2015 允许 .Net 4.5.2 应用程序使用 C# 6.0 函数?
Why does VS2015 allow C# 6.0 functions for .Net 4.5.2 applications?
我在 Visual Studio 2015 年遇到了一个奇怪的行为。我正在编写一个针对 4.5.2 .Net Framework 的应用程序:
然后在应用程序中,我尝试使用一些在 C# 6.0(来自 .Net 6.0)中实现的东西:
int number = 456;
var name = nameof(number);
string str = $"Time = {DateTime.Now}";
我很确定 nameof
和使用 $
的字符串格式化仅在 .Net 4.6 中可用,但我仍然能够编译此代码 - 虽然我的目标是事件4.5.2.
我在Visual Studio2013运行同样的代码,也是针对4.5.2版本的,但是这次编译不了代码(nameof
没找到).
VS2015 怎么可能允许我编译目标 .Net Framework 版本中不应允许的代码?
我瞎猜的是VS2015能够将C#6.0代码计算到CIL中,它仍然与以前的版本兼容,但我不确定这是不是正确的猜测。
C# 6 是 C# 语言的新版本,它与.NET Framework 版本无关。因此,即使是旧版本的 .NET,您也可以使用 C# 6。 Roslyn compiler is a new compiler that is shipped with VS2015, but 作为独立的。所以基本上 Roslyn 会为您编译新功能,无论您使用的框架版本如何。
我在 Visual Studio 2015 年遇到了一个奇怪的行为。我正在编写一个针对 4.5.2 .Net Framework 的应用程序:
然后在应用程序中,我尝试使用一些在 C# 6.0(来自 .Net 6.0)中实现的东西:
int number = 456;
var name = nameof(number);
string str = $"Time = {DateTime.Now}";
我很确定 nameof
和使用 $
的字符串格式化仅在 .Net 4.6 中可用,但我仍然能够编译此代码 - 虽然我的目标是事件4.5.2.
我在Visual Studio2013运行同样的代码,也是针对4.5.2版本的,但是这次编译不了代码(nameof
没找到).
VS2015 怎么可能允许我编译目标 .Net Framework 版本中不应允许的代码?
我瞎猜的是VS2015能够将C#6.0代码计算到CIL中,它仍然与以前的版本兼容,但我不确定这是不是正确的猜测。
C# 6 是 C# 语言的新版本,它与.NET Framework 版本无关。因此,即使是旧版本的 .NET,您也可以使用 C# 6。 Roslyn compiler is a new compiler that is shipped with VS2015, but