wha*_*vAR 9 .net c# c#-6.0 visual-studio-2015 .net-4.6
我有一个针对旧版.NET Framework(.NET 4.5.2)的项目.我安装了Visual Studio 2015(因此我的机器上安装了.NET 4.6).我注意到如果我使用.NET 4.6/C#6中发布的C#语言功能,它仍会编译.如果我的项目的目标框架是<.NET 4.6,那么这不应该编译:
public string MyExpressionBodyProperty => "1";
//auto properties are new in C# 6
public string MyAutoProperty { get; } = "1";
private static void MethodThatUsesNameOf(string filename)
{
if (filename == null)
{
//nameof was released in C# 6
throw new ArgumentException("The file does not exist.", nameof(filename));
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能确保我只使用与我所针对的框架版本一起使用的.NET语言功能?
Eri*_* J. 20
.NET Framework版本和C#语言版本是不同的东西.C#6语言功能
public string MyAutoProperty { get; } = "1";
nameof(filename)
Run Code Online (Sandbox Code Playgroud)
可以由VS 2015编译成针对早期框架的代码.
我怎样才能确保我只使用与我所针对的框架版本一起使用的.NET语言功能?
如果您尝试使用.NET 4.6 Framework功能,如果您的目标是早期框架,则会出现相应的编译器错误.
我能将此代码部署到没有.NET 4.6的机器上吗?
是的,你愿意.只要部署机器具有与您在VS2015中定位的框架兼容的框架.
Guv*_*nte 12
有C#6功能和.NET 4.6功能.
nameof 是一个C#6功能,所以只需要在较新的编译器上运行,但仍然可以使用旧的.NET框架.
需要.NET 4.6的功能示例如下:
public void Foo(IReadOnlyCollection<string> input)
{
}
public void Main(string[] args)
{
Foo(new Stack<string>());
}
Run Code Online (Sandbox Code Playgroud)
在.NET 4.6 Stack实现中,IReadOnlyCollection但在以前的版本中却没有.如果您选择.NET 4.5.2作为目标平台,则上述代码将无法编译.
| 归档时间: |
|
| 查看次数: |
1999 次 |
| 最近记录: |