Visual Studio 2017 15.3简化空检查

Stu*_*art 9 c# null visual-studio-2017

我有这个代码:

public UnityResolver(IUnityContainer container)
{
   if (container == null) throw new ArgumentNullException("container");
   _container = container;
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio显示3个灰点,并建议简化空检查.

它使得方法如下:

_container = container ?? throw new ArgumentNullException("container");
Run Code Online (Sandbox Code Playgroud)

那不构建......

这里发生了什么?为什么它认为它可以简化这个,为什么它将它简化为不构建的东西.

给出的错误是:

1>L:\SL1-(SentiLAN)-SentiLAN v1 - Current System\SentilanCore\WEB API with Plugins\APITest2\App_Start\UnityConfig.cs(31,39,31,44): error CS1525: Invalid expression term 'throw'
1>L:\SL1-(SentiLAN)-SentiLAN v1 - Current System\SentilanCore\WEB API with Plugins\APITest2\App_Start\UnityConfig.cs(31,39,31,44): error CS1002: ; expected
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ulu*_*rak 7

它是编译器问题,代码有效.他们更新了版本并修复了最新更新(几小时前)的错误.如果弹出通知或从网站上下载,您可以下载更新.

或者只是更新Microsoft编译器版本,因为它不包含在VS 2017中...

Install-Package Microsoft.Net.Compilers -Version 2.3.0 是我认为最新的

  • 安装了v2.3.1,它的工作原理:) (2认同)