为什么VS2017允许Visual Studio 2010在linq查询中不允许使用“ is null”?

Rog*_*ger 3 c# linq null c#-4.0 c#-7.0

当我尝试使用Visual Studio 2010构建Visual Studio 2017解决方案(适用)时,它在下面的代码行上给了我一个语法错误。

var x = (from a in list where a.fld is null select a).ToList();
Run Code Online (Sandbox Code Playgroud)

我已经将该行更改为== null现在代码可以在两个版本的Visual Studio上编译,但是我想知道为什么is nullVS2010失败?

Joh*_*ica 6

is null图案匹配的语法是在C#7中引入(参见此处)。

Visual Studio 2010 IDE和捆绑的编译器支持的C#语言的最高版本似乎是C#4(请参阅此处)。

简而言之:您无法执行此操作,因为您的项目所使用的C#语言版本不支持此语法。