1.Null条件演算子
C#6.0から使用可能。
演算子の表記は「?.」
この「?.」の前にくる値がnullの場合はnull、そうでない場合は「?.」の後ろの処理を実行する。
2.使用例
object型の値を文字列に変更する場合などに、object.ToString()としたいが、
objectがnullの場合、エラーが発生する。
旧バージョンでは
例1
if(object == null)
{
str = null;
}
else
{
str = object.ToString();
}
または
例2
str = obj == null ? null : obj.ToString();
のような記述が必要だったが、
例3
str = obj?.ToString();
のような記述でobjectがnullの時はnull、
nullでない場合objectを文字列にした値を返すことができるようになった。
Listの項目に対してNull条件演算子を使用する場合、
例4
str = obj?[x].ToString();
のようにして使用する。
Null条件演算子では、nullの場合に返す値は必ずnullなので、
nullの時に文字列で”NULL”と返すなどはできない。
※例1や例2では可能。
例5
str = obj ?? "NULL";
この方法でも例1、例2と同じようにnullの場合に任意の値を返すことが可能。
??の左側がnullでない場合、??の左側の値を返し、??の左側がnullの時、??の右の値を返す。
例3と例5をあわせることで、メソッドを持つクラスがnullになる可能性がある時のif文を
簡単に書いたりすることができる。
例6
if(chkClass?.chk() ?? false)
{
return;
}
値を返さないパターンでは、
例7
obj?.Dispose();
のようにすると、objがnullでない場合にのみDispose()を実行させるなど、
通常nullチェックが必要な処理に対し、nullチェックを省略することができる。
コメント