2

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

int number = true ? 1 : 0;

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

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

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

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

谢谢。

4

2 回答 2

9

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

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

尽管从技术上讲,如果您真的想要,您可以使用匿名函数来执行此操作:

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

但不建议这样做;在这种情况下,使用 anif/else更容易且更具可读性。

于 2013-07-08T14:17:47.593 回答
4

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

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

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

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

于 2013-07-08T14:15:55.563 回答