2017-08-15 90 views
9

我有這樣的代碼:的Visual Studio 2017 15.3簡化空校驗

public UnityResolver(IUnityContainer container) 
{ 
    if (container == null) throw new ArgumentNullException("container"); 
    _container = container; 
} 

Visual Studio中示出了3點灰度的點,並建議簡化空校驗。

這使得該方法是:

_container = container ?? throw new ArgumentNullException("container"); 

這不建...

這是怎麼回事?它爲什麼認爲它可以簡化這一點,爲什麼它將其簡化爲不構建的東西。

的錯誤是給人是:

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 

enter image description here

+1

_container =容器?拋出新的ArgumentNullException(「容器」);應該正確地構建。看起來像有效的代碼 –

+2

你好嗎?這是Visual Studio的一個奇怪的錯誤消息格式。我的猜測是,無論您使用的構建過程是使用C#6編譯器。 –

+1

@Jon Skeet。我正在使用VS2017並擊中F5。有趣的是在錯誤窗口中沒有顯示錯誤,但在Build下的輸出窗口中顯示了2個錯誤。 – Stuart

回答

6

它的編譯器的問題,代碼是有效的。他們更新了版本並修復了最新更新(幾個小時前)中的錯誤。您可以在彈出通知或從網站上下載更新。

或者乾脆更新Microsoft編譯器版本,因爲它不是在VS 2017年列入...

Install-Package Microsoft.Net.Compilers -Version 2.3.0是最新的,我認爲

+0

立即嘗試:) – Stuart

+0

更新後出現同樣的錯誤。 nuget安裝也很順利。 – Stuart

+0

甚至嘗試重啓VS,同樣的錯誤。 – Stuart