三元条件运算符:'throw' 和 'throw' C# 之间没有隐式转换

use*_*222 0 c# exception .net-core asp.net-core

我目前有:

if (isCritical)
    throw new CriticalException(a, b);
throw new FailException(a, b);
Run Code Online (Sandbox Code Playgroud)

我想使用三元条件运算符,例如:

isCritical ? throw new CriticalException(a, b) : throw new FailException(a, b);
Run Code Online (Sandbox Code Playgroud)

但我收到错误There is noimplicit conversion between 'throw' and 'throw' 这是否意味着不可能在这里这样做,或者我做错了?

Ben*_*igt 5

即使解决了类型问题,也不能这样使用三元。

三元运算符不能是独立的语句。这也是不允许的:

a? f(): g();
Run Code Online (Sandbox Code Playgroud)

但是,您可以在的操作数使用三元throw

throw (a? b: c)
Run Code Online (Sandbox Code Playgroud)