【C#】Listがnullの時、例外エラーにならないようにしたい

List型の変数が初期の場合(まだ、インスタンスが作成されていない場合)、null状態になります
たとえば、このまま、Console.WriteLine()メソッドで要素数を表示すると例外エラーが発生します

例外エラーのサンプル

コード

List<string> array = null;

Console.WriteLine(array.Count);

例外エラー

Message "Object reference not set to an instance of an object."
//メッセージ "オブジェクト参照がオブジェクトのインスタンスに設定されていません"

Nullを考慮したサンプル

例外エラーはアプリケーションが強制終了されるので致命的になります

nullの時にもlenに0がそれ以外は要素数が代入されるようにしたいですね

if文で作成

このコードは、array が null でない場合に array.Count を取得し、それ以外の場合には len に 0 を代入します。if 文を使用しています

List<string> array = null;

int len;

if (array != null)
{
    len = array.Count;
}
else
{
    len = 0;
}

Console.WriteLine(len);

三項演算子で置き換え

このコードでは、三項演算子 (? :) を使用しています。条件式 (array != null) が true の場合は array.Count が len に代入され、それ以外の場合は 0 が代入されます

List<string> array = null;

int len = (array != null) ? array.Count : 0;

Console.WriteLine(len);

null条件演算子 (?.) と null 合体演算子 (??)で置き換え

このコードでは、null条件演算子 (?.) と null 合体演算子 (??) を使用しています。

null条件演算子 (?.)

array?.Count は、array が null の場合に null を返し、それ以外の場合には array.Count を返します

null 合体演算子 (??)

?? 演算子は、左側の式が null である場合に右側の式を評価し、右側の式が null でなければその値を返します
したがって、array?.Count ?? 0 は、array が null の場合に 0 を返し、それ以外の場合には要素数を返します
このコードを使用することで、array が null でも例外が発生せずに len に正しい値が代入されます

List<string> array = null;

int len = array?.Count ?? 0;

Console.WriteLine(len);

C#,学習

Posted by hidepon