【发布时间】:2017-08-15 09:54:01
【问题描述】:
我有这个代码:
public UnityResolver(IUnityContainer container)
{
if (container == null) throw new ArgumentNullException("container");
_container = container;
}
Visual Studio 显示 3 个灰点并建议简化 null 检查。
它使方法如下:
_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
【问题讨论】:
-
_container = 容器??抛出新的 ArgumentNullException("container");应该正确构建。看起来像有效代码
-
你建设得怎么样了?对于 Visual Studio,这是一种奇怪的错误消息格式。我的猜测是,您使用的任何构建过程仍在使用 C# 6 编译器。
-
@Jon Skeet。我正在使用 VS2017 构建并按 F5。有趣的是,错误窗口中没有显示错误,但 Build 下的输出窗口中显示了 2 个错误。
-
@DavidG。我通过 nuget 安装了 unity 和 Unity.WebAPI,这对我使用的编译器有何影响? (我使用的是 Unity DependencyInjection 框架而不是游戏引擎)。
-
@Stuart 是的,忽略我 :)
标签: c# null visual-studio-2017