在 C# 三元运算符中调用函数

Calling functions in C# ternary operator

为什么此代码无效?很确定它在 C/C++

中是合法的

伪代码:

String s = Console.ReadLine();
int x = 0;
Int32.TryParse(s, out x) ? Console.WriteLine("Foo") :  Console.WriteLine("bar");

here 所述,在 C# 中,并非每个表达式都可以用作语句。

console.writeline return void.. 条件运算符 (?:) returns 取决于布尔表达式的值的两个值之一

MSDN

三元运算符用于 return 值,必须分配这些值。

如果你想在三元运算符中调用 void 方法,你可以像这样使用委托:

String s = Console.ReadLine();
int x = 0;
(Int32.TryParse(s, out x) ? new Action(() => Console.WriteLine("Foo")) : () => Console.WriteLine("bar"))();