[ C# ] null 条件演算子(?)で null チェックをスッキリ記述する

Pocket

ここでは、C# 6.0(Visual Studio 2015)での新しい構文である、null 条件演算子の使い方について掲載しています。

個人的には微妙な感じもしますが、スレッドセーフに動作し、レアケースに発生するバグの混入等を防いだりするなどしてくれたりもするようです。慣れれば使いやすいかもしれません。

スポンサーリンク


null 条件演算子(?)を使わずに null チェック

まずは、見慣れた null チェックの書き方のサンプルです。心が落ち着きます。

string str = null;

// 何らかの処理

// null チェック!null だと例外が発生する
if (str != null)
{
    // 文字列内にパラメータで与えた文字列が存在するか確認
    bool bb = str.Contains("XYZ");
}

null 条件演算子(?)を使った null チェック

次は、上記の null チェックを null 条件演算子を使って書き換えてみます。なんだか、ざわざわします。慣れるまでは落ち着きません(多分)。

string strTest = null;

// null がリターンされる場合は null 許容型の変数(b)で
// ある必要がある。bool 型だとコンパイルエラー
bool? b = strTest?.Contains("ABC"); // b: null

strTest = "ABCDEFG";
b = strTest?.Contains("ABC"); // b: true

List<int> intList = null;
            
// インデックスでアクセスする場合の書き方
int? i = intList?[0]; // i: null

intList = new List<int>() { 3, 2, 1 };

// インデックスが有効な範囲にあれば値を取得できる
i = intList?[2]; // i: 1

使い方間違うと、null 許容型ばかりの変数が定義されることになり、かえって読みにくくなるかもしれません。

 

そういえば最近、近所の田んぼに水がはられたせいか、鳥が「チュンチュン」と、ウルサイです。

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>