C#:抛出无效的表达式编译

Jor*_*rdi 12 c#

我正在使用此代码来检查queryable值:

visitor.Queryable = queryable ?? throw new Exception("error message");
Run Code Online (Sandbox Code Playgroud)

我收到了编译错误:

错误CS1525:无效的表达式术语'throw'

我正在使用4.5.2 .net框架.有任何想法吗?

Gil*_*een 22

此功能仅在C#7.0之后可用.请参阅" 抛出C#7.0中的新增内容".

如果您使用较旧的VS并想要启用C#7功能:请查看如何在Visual Studio 2015中使用c#7?如果不是在VS 2017.


如果您正在使用以前版本的C#编译器,因为您必须是由于错误,那么您不能以??这种方式使用运算符,因为throw不返回正确的操作数值.正如C#Docs所说:

如果操作数不为null,则返回左侧操作数; 否则返回正确的操作数.

模式是这样的:

var result = someObject ?? valueToAssignIfWasNull;
Run Code Online (Sandbox Code Playgroud)

要解决它而改为:

if(queryable == null)
{
    throw new Exception("error message");
}
visitor.Queryable = queryable;
Run Code Online (Sandbox Code Playgroud)

  • @MarcoSalerno - 不会真的这么说......如果它作为C#7.0的有效编译选项添加到语言中那么我想有足够的理由这样做:)我同意的是它是个人的偏爱. (2认同)
  • 是的,正如我所说的"我认为",我发现它在语法上不清楚 (2认同)