C# - null 許容型(Nullable型)
初めに
C# には、通常の値と null がとれる型が欲しい場合のために null 許容型が存在します。本記事では、null 許容型について、まとめます。
Index
null 許容型
null 許容型とは、元の型の値または null の値を取れる型のことです。C# では、通常の型の後ろに ? をつけることで null 許容型にすることができます。
例
// 型の後ろに ? をつけるだけ int? nullableInt = null; string? nullableString = null; bool? nullableBool = null;
使うタイミング
null である状況を明示的に扱う必要がある場合に使います。例えば、
- データベースからのデータ取得
- メソッドの戻り値
- 初期値の設定
- メソッドの引数
などが挙げられます。
null 合体演算子(null coalescing operator)??
?? を null 合体演算子といいます。
result = nullableValue ?? defaultValue;
このとき、nullableValue が null でない場合は nullableValue の値が、nullの場合は defaultValue の値が result に代入されます。
例
int? value1 = null; int? value2 = 20; int result = value1 ?? value2 ?? 30; // value1がnullならば、value2をチェックし、どちらもnullなら30が代入される
null 合体代入演算子 ??=
C# 8.0 から null 合体代入が使えるようになりました。
null合体代入演算子は、変数がnullである場合のみ代入を行い、変数が既に値を持っている場合には代入をスキップします。
// variable が null の場合のみ, value が代入される variable ??= value;