2016-07-14 5 views
2

私は私がする必要があることを行うための他の方法があることを知っています。私はそれができるかどうかを知りたいだけです。C# - 演算子:? - 関数に何かを渡すことも可能ですか?

if elseを置き換える疑問符です。

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

は、関数へのパラメータを渡すんし、呼び出すことができるようにするのdoSomething()(intead [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); 

3値の結果は互換性がなければなりません。メソッド呼び出しは、どの命令にジャンプするかを知るためにコンパイラによってベークされます。三項演算子はそれを書き換えることはできません。

+1

doSomethingに戻り値がない場合、これは機能しません。 – DavidG

+1

私はこのメソッドがvoidかnon voidかどうかをコンパイルするとは思わない。 – user3185569

+1

@ user3185569いいえ、そうではありません。 – DavidG

関連する問題