2016-07-19 19 views
2

为什么此代码无效?很肯定它在C/C++C#三元运算符中的调用函数

伪合法的:

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

也许你的意思是'Console.WriteLine',而不是'Console.writeline'。 – Codor

+0

这是伪代码。我在手机上输入了这个信息。问题是关于三元运算符,代码将会编译成if-else – aCuria

+0

@Hank对此,我认为这个问题很简单,可以在不需要编译的情况下进行回答。我不记得发布任何错误消息 – aCuria

回答

1

的值的两个值中的一个三元运算符用于返回值和那些返回值必须分配。

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

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

正如所讨论的here,在C#中,不是每一个表情可以作为一个声明。

1

console.writeline返回空隙..条件运算符(?:)根据布尔表达式

MSDN