VS2015で追加されたnull条件演算子(?.演算子)について、今日初めて使ったので覚え書き。
この演算子を使用すると、 Maybeモナドのようにオブジェクトがnullかどうかを気にせずに実装を行えるようになります。
例1:
var control = form?.ActiveControl;
フォームオブジェクトからアクティブなコントロールを取得します。
フォームオブジェクトがnullの場合、controlはnullになります。
例2:
var color = form?.ActiveControl?.BackColor;
フォームオブジェクトからアクティブなコントロールの背景色を取得します。
フォームオブジェクトやアクティブコントロールがnullの場合、colorはnullになります。
なお、null条件演算子を使用しているため、colorの型はNullable<Color>になります。
例3:
var color = form?.ActiveControl?.BackColor ?? Color.White;
フォームオブジェクトからアクティブなコントロールの背景色を取得します。
フォームオブジェクトやアクティブコントロールがnullの場合、colorはWhiteになります。
colorの型はColorになります。
例4:
form?.ActiveControl?.Refresh();
フォームオブジェクトのアクティブなコントロールのRefreshメソッドを実行します。
フォームオブジェクトやアクティブコントロールがnullの場合、Refresh()メソッドは実行されません。
残念なのはプロパティやインデクサへのSetには使用できないこと。(自分が使い方を分かっていないだけかも)以下のようなコードは書けません。
form?.ActiveControl?.BackColor = Color.Black;
(frm?.ActiveControl?.BackColor).Value = Color.Black;