2016-07-19 7 views
2

なぜこのコードは無効ですか?かなり確信して、それはC/C++C#の三項演算子で関数を呼び出す

擬似コードで合法だ:

String s = Console.ReadLine(); 
int x = 0; 
Int32.TryParse(s, out x) ? Console.WriteLine("Foo") : Console.WriteLine("bar"); 
+1

おそらく、あなたの代わりに '' Console.writeline'のConsole.WriteLine'を意味します。 – Codor

+0

これは疑似コードです。私はこれをモバイルで入力しています。質問は三項演算子に関するもので、コードはif-elseのようにうまくコンパイルされます。 – aCuria

+0

@ Hankそれについて申し訳ありませんが、私は質問がコンパイルせずに答えることができるほど簡単だと思っていました。私はどんなエラーメッセージを投稿しても思い出せません – aCuria

答えて

1

に応じて三項演算子が値およびそれらを戻すために使用される2つの値のいずれかを返します値を割り当てる必要があります。

あなたは三項演算子の空隙のメソッドを呼び出したい場合は、このようなデリゲートを使用することができます。

String s = Console.ReadLine(); 
int x = 0; 
(Int32.TryParse(s, out x) ? new Action(() => Console.WriteLine("Foo")) :() => Console.WriteLine("bar"))(); 
0

としては、C#で、here議論ではなく、すべての式は、ステートメントとして使用することができます。

1

Console.WriteLineをリターンボイド..条件演算子(?:)ブール式の値

MSDN