【问题标题】:Calling functions in C# ternary operator [duplicate]在 C# 三元运算符中调用函数 [重复]
【发布时间】:2016-11-21 21:36:32
【问题描述】:

为什么此代码无效?很确定它在 C /C++ 中是合法的

伪代码:

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

【问题讨论】:

  • 也许你的意思是Console.WriteLine而不是Console.writeline
  • 这是伪代码。我在手机上输入这个。问题是关于三元运算符,代码将编译为 if-else
  • @Hank 对此感到抱歉,我认为这个问题很简单,无需编译即可回答。不过我不记得发布任何错误消息

标签: c# ternary-operator


【解决方案1】:

三元运算符用于返回值,这些值必须被赋值。

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

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

【讨论】:

    【解决方案2】:

    console.writeline return void.. 条件运算符 (?:) 根据布尔表达式的值返回两个值之一

    MSDN

    【讨论】:

      【解决方案3】:

      正如 here 所讨论的,在 C# 中,并非每个表达式都可以用作语句。

      【讨论】:

        猜你喜欢
        • 2021-03-25
        • 1970-01-01
        • 2014-01-19
        • 2015-04-04
        • 2018-09-26
        • 2021-09-30
        • 1970-01-01
        • 2016-08-30
        • 2012-08-15
        相关资源
        最近更新 更多