Null合并运算符(??)带返回

Twe*_*nty 5 c# null-coalescing c#-7.0

我想知道为什么在C#7.0中可以这样做:

int? test = 0;
int test2 = test ?? throw new Exception("Error");
Run Code Online (Sandbox Code Playgroud)

..但不是这个:

int? test = 0;
int test2 = test ?? return;
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

dia*_*ler 8

throw最近(在C#7.0中)已经变成了一个表达式来启用它.return没有 - 它总是一个公正的声明.该??运营商需要一个表达,而不是一个声明.这是由C#设计者任意选择,特别以允许使用throw??.

请参阅throw表达式的文档