2017-08-15 82 views
9

Mam ten kod:Visual Studio 2017 15,3 Uproszczenie zerową kontrolę

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

Visual Studio pokazuje 3 szare kropki i sugeruje, aby uprościć sprawdzanie NULL.

To czyni tę metodę:

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

To nie budowy ...

Co tu się dzieje? Dlaczego uważa, że ​​może to uprościć i dlaczego upraszcza ją do czegoś, co nie jest budowane?

Błąd to daje to:

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 = pojemnik ?? throw nowy ArgumentNullException ("container"); powinien poprawnie budować. wygląda jak poprawny kod –

+2

Jak się budujesz? To jest dziwny format komunikatu o błędzie dla Visual Studio. Domyślam się, że niezależnie od procesu kompilacji używasz kompilatora C# 6. –

+1

@Jon Skeet. Buduję używając VS2017 i wciskając F5. Co ciekawe, w oknie błędów nie wyświetla się żaden błąd, ale 2 błędy pojawiają się w oknie wyjściowym w oknie Build. – Stuart

Odpowiedz

6

jego emisji kompilator, kod jest poprawny. zaktualizowali wersję i naprawili błąd w najnowszej aktualizacji (kilka godzin temu). Możesz pobrać aktualizację, jeśli pojawi się powiadomienie lub ze strony internetowej.

Albo po prostu zaktualizować wersję kompilatora Microsoft, ponieważ nie został uwzględniony w VS 2017 ...

Install-Package Microsoft.Net.Compilers -Version 2.3.0 to najnowszy myślę

+0

Próbuję tego teraz :) – Stuart

+0

Ten sam błąd po aktualizacji. Instalacja nuget też poszła dobrze. – Stuart

+0

Nawet próba ponownego uruchomienia VS, ten sam błąd. – Stuart