2016-07-14 67 views
2

我知道還有其他方法可以做我需要做的事情。我只想知道它是否可以完成。C# - 操作員:? - 是否有可能傳遞一些東西或沒有東西到一個函數?

這是關於問號,取代一個if else。

public void doSomething() { ...... } 
public void doSomething(int i) { ...... } 
public void f(int i) 
{ 
    doSomething(i > 0 ? [NOTHING] : i); 
} 

有什麼我可以寫傳不帶參數的功能和能夠調用DoSomething的()(這一翻譯[NOTHING]的)?

+2

難道你不能只寫'i> 0嗎? doSomething():doSomething(i);'。 – user2296177

+0

@ user2296177'i> 0? doSomething():doSomething(i);' - 當* doSomething()*爲void時,它甚至會編譯嗎? – user3185569

+0

@ user3185569它適合我。 – user2296177

回答

6

沒有。您應該使用標準if..else,或者如果doSomething返回某些內容,則可以用這種方法重寫它。

i > 0 ? doSomething() : doSomething(i); 

三元結果必須兼容。該方法調用被編譯器烘焙以知道要跳轉到的指令。三元運算符不能重寫那個。

+1

如果doSomething沒有返回值,這將不起作用。 – DavidG

+1

我不認爲這會編譯該方法是無效的還是無效的。 – user3185569

+1

@ user3185569不,它沒有。 – DavidG

相關問題