管理人の技術ブログです。2014-07-06null条件演算子C#三項演算子はひとつの式の中で条件式を表現できて非常に便利です。言うまでもないかもしれませんが、例えば以下のような書き方ができます。"不明";*/上記のような書き方は全然問題ないのですが、「値をnullと比較して、nullでなければそのまま値を返し、nullだったら既定値を返す」という処理は定型句として結構あります。2.0でnull合体演算子という短縮形が追加されました。"不明";null条件演算子ところで、三項演算子の利用においては「インスタンスをnullと比較し、nullでなければそのインスタンスのメンバーを呼び出し、nullだったらそのままnullを返す」というケースも相当数あると思います。以下のようなものです。演算子のキーワードは「?.」および「?[]」です。インデクサにも対応!通常のメンバー呼び出しの記述に「?」ひとつ付けるだけです。超気持ちいい!ショートサーキット評価null条件演算子を連続的に記述した場合はどう動くでしょうか?@ufcppさんのblog記事でも解説されていますが、以下のように評価/解釈されます。null;*/なのでpersonがnullでもperson.Nameがnullでも例外が出ません。カジュアルに「?.」で繋いで書くことができる安心感、素晴らしいです。おまけですが、以下のようにnull合体演算子と一緒に用いると途中にnullがあった場合の既定値を設定できるので、とても便利だと思います。nullの場合の既定値も簡単に設定できる逆コンパイル先の例でも挙げましたが、null条件演算子のコードを逆コンパイルすると以下のようなショートサーキット評価がなされるコードが展開されます。ローカル変数を利用して一度結果を受けてから次の評価に入っている点も押さえておくべきポイントでしょう。以前Null許容型と三項演算子という投稿で、以下のコードは型推論されずにコンパイルエラーになることを紹介しました。間に暗黙的な変換がないため、条件式の型がわかりません。CTP現在でもまだコンパイルエラーになります。(1)月別アーカイブはてなブログをはじめよう!xin9leさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。