在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