在C#
我知道你可以做这样的事情:是否有三元运算符在c#中运行函数?
int number = true ? 1 : 0;
这将返回左侧或右侧,这取决于如果Boolean
是真还是假。
但有没有办法做同样的事情,而是运行一个函数,而不是返回一个值?事情是这样的:
这并不工作(我得到多个语法错误)
WPS.EDIT_MODE ? ExecuteEditMode() : ExecutePublicMode();
感谢。
在C#
我知道你可以做这样的事情:是否有三元运算符在c#中运行函数?
int number = true ? 1 : 0;
这将返回左侧或右侧,这取决于如果Boolean
是真还是假。
但有没有办法做同样的事情,而是运行一个函数,而不是返回一个值?事情是这样的:
这并不工作(我得到多个语法错误)
WPS.EDIT_MODE ? ExecuteEditMode() : ExecutePublicMode();
感谢。
条件运算符必须返回一个值。假设函数不都为您返回一个有意义的值,你应该使用if
语句来做到这一点:
if(someCondition)
doA();
else
doB();
尽管从技术上说,你可以使用匿名函数来做到这一点,如果你真的想:
int number = someCondition ?
new Func<int>(() => { doA(); return 0; })() :
new Func<int>(() => { doB(); return 1; })();
但这并不是建议;对于这种情况,使用if/else
更容易且更易读。
如果两个函数都返回int
,是的。
三元运算符是关于返回值的。不返回值是没有意义的。
条件运算符(?:)根据 返回布尔表达式的值中的两个值之一。
http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx
这不正常吗?如果两个函数都返回一个我期望的int。 – DoctorMick
看一看http://stackoverflow.com/questions/2765360/ternary-operators-in-c-sharp?rq=1 – jltrem