【问题标题】:Is there a ternary operator to run a function in c#?在c#中是否有一个三元运算符来运行一个函数?
【发布时间】:2013-07-05 22:03:28
【问题描述】:

C# 我知道你可以这样做:

int number = true ? 1 : 0;

这取决于Boolean 是否为真返回左侧或右侧。

但是有没有办法做同样的事情,而是运行一个函数而不是返回一个值?像这样的:

这不起作用(我收到多个语法错误)

WPS.EDIT_MODE ? ExecuteEditMode() : ExecutePublicMode();

谢谢。

【问题讨论】:

标签: c# ternary-operator


【解决方案1】:

条件运算符必须返回一个值。假设这些函数都不会为您返回一个有意义的值,您应该使用 if 语句来做到这一点:

if(someCondition)
    doA();
else
    doB();

虽然从技术上讲,如果你真的想要的话,你可以使用匿名函数来做到这一点:

int number = someCondition ?
    new Func<int>(() => { doA(); return 0; })() :
    new Func<int>(() => { doB(); return 1; })();

但不建议这样做;对于这种情况,使用if/else 更容易且更易读。

【讨论】:

  • 我更新了我的问题。所以我猜如果函数不返回任何东西,if else 是最好的方法。如果他们返回一些东西,但你没有将它分配给变量怎么办?
  • @omega 我假设函数从一开始就返回无效;您的编辑并没有改变我回答的有效性。
【解决方案2】:

如果两个函数都返回 int,是的。

三元运算符是关于返回值的。不返回值没有意义。

条件运算符 (?:) 返回两个值之一,具体取决于 布尔表达式的值。

http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx

【讨论】:

  • 他特别说而不是返回一个值,这意味着他们没有。
猜你喜欢
  • 2019-10-08
  • 2012-06-02
  • 2021-10-06
  • 2012-08-08
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2011-02-16
相关资源
最近更新 更多