我在带有Visual Studio 2017的Windows 10机器上的.NET Project中编写了一些代码。目标框架是4.5.2。并且使用的C#版本是默认的(在“C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319”下运行csc工具显示C#5。
我使用了C#6中的一个特性.Monadic null检查(https://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated)。并且编译器不会抱怨它。
这是正常的行为还是我错过了什么?编译器不应该抱怨它吗?
您缺少的是使用的C#编译器不是您找到的csc.exe。 Visual Studio附带了自己的C#编译器,它支持C#6(以后,根据你安装的VS的确切版本)。
C#语言版本由Visual Studio决定,而不是由.Net Framework决定。
只要您的Visual Studio版本支持C#版本,您就不会遇到任何错误。
在Visual Studio中配置语言版本:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version