我想知道为什么可以在C#7.0中做到这一点:
int? test = 0;
int test2 = test ?? throw new Exception("Error");
..但不是这样:
int? test = 0;
int test2 = test ?? return;
有人可以解释吗?
答案 0 :(得分:8)
throw
相对较新(在C#7.0中)已变成可启用此功能的表达式。 return
尚未-它始终是公正的声明。 ??
运算符需要一个表达式,而不是一个语句。这是C#设计人员的任意选择,特别是允许将throw
与??
一起使用。
答案 1 :(得分:1)
好吧,因为没有人以这种方式实现它。或者更确切地说,因为return
不是表达式。
throw
以前只是C#7.0之前的语句,但后来由于提议而被扩展为表达式(空合并运算符仅支持表达式)。
因此,除非没人建议将return
用作表达式,否则它将不起作用。