編集:元の質問では、int?
. 現在は修正されています。
そのコードはコンパイルさえできません。
タイプミスはさておき、問題があることに簡単に気付かずに投稿したという事実(bool
LHS が であるときに、?? の RHS でa を使用しようとしているint?
) は、たとえ正しく理解できたとしても、それは良い考えではないことを示唆しています。 .
実際の例を見る必要がありますが、通常はこれを null 合体演算子を使用して 1 つのステートメントに分割し、次に条件演算子を使用して別のステートメントに分割すると思います。もう 1 つのオプションは、演算子に関連して null 許容型の動作を使用することです...しかし、これもかなりあいまいです。(私はちょうどその行動が何であるかを正確に思い出さなければなりませんでした!)
私は一般的に null 合体演算子が好きですが、それを条件付き演算子と組み合わせると、少しあいまいになるだけだと思います。単一の式であることに大きな利点がある場合(たとえば、代替手段が追加のメソッドを導入する初期化など)はおそらく受け入れると思いますが、一般的には2つのステートメントに分割することを好みます。
編集:この特定のケースの1つの代替方法は、「true」と比較することです-これは冗長に見えますが、次の場合はそうではありませんbool?
:
result = (testBool == true) ? "Yes" : "No";
もちろん、括弧は必要ありませんが、IMOを明確にします。
これはもっと簡単だと思いtestBool
ます。実際に真の場合、結果は「はい」になります。それ以外の場合は「いいえ」です。「デフォルト」で「はい」にしたい場合は、次のように記述します。
result = (testBool == false) ? "No" : "Yes";