Null条件演算子(「?.」または「?[」)を使用すると、nullチェックをしなくてもnull例外が発生しません。
Null条件演算子の使用例
C#-
nullがセットされた文字型の変数に対し、Trimメソッドを実行。「?.」演算子を使用すると例外が発生しません。
// nullを代入 string str = null; // ?. 演算子を使用すると result に null がセットされ、例外は発生しない string result = str?.Trim(); // 例外 NullReferenceException が発生 result = str.Trim();
-
nullがセットされた文字配列のLengthプロパティを参照。「?.」演算子を使用すると例外が発生しません。
// nullを代入 string[] strArray = null; // ?. 演算子を使用すると length に null がセットされ、例外は発生しない int? length = strArray?.Length; // 例外 NullReferenceException が発生 length = strArray.Length;
-
nullがセットされた文字配列の中身を参照。「?[」演算子を使用すると例外が発生しません。
// nullを代入 string[] strArray = null; // ?[ 演算子を使用すると strValue に null がセットされ、例外は発生しない string strValue = strArray?[0]; // 例外 NullReferenceException が発生 strValue = strArray[0];
-
nullがセットされた文字型の変数に対し、Trimメソッドを実行。「?.」演算子を使用すると例外が発生しません。
' nullを代入 Dim str As String = Nothing ' ?.演算子を使用すると result に Nothing がセットされ、例外は発生しない Dim result As String = str?.Trim() ' 例外 NullReferenceException が発生 result = str.Trim()
-
nullがセットされた文字配列のLengthプロパティを参照。「?.」演算子を使用すると例外が発生しません。
VB.NETでは null条件演算子の結果を 非null許容型 の変数に代入してもコンパイルエラーが発生しないため、注意してください。
' nullを代入 Dim strArray As String() = Nothing ' ?. 演算子を使用すると length に Nothing がセットされ、例外は発生しない Dim length As Integer? = strArray?.Length ' 【注意】 null許容型の変数に代入しないと 例外:ThrowInvalidOperationException が発生します。 ' 次の例は null許容型ではなく、通常のIntegerに代入しているので例外が発生します。 ' Dim length As Integer = strArray?.Length ' 例外 NullReferenceException が発生 length = strArray.Length
-
nullがセットされた文字配列の中身を参照。「?(」演算子を使用すると例外が発生しません。
' nullを代入 Dim strArray As String() = Nothing ' ?( 演算子を使用すると strValue に Nothing がセットされ、例外は発生しない Dim strValue As String = strArray?(0) ' 例外 NullReferenceException が発生 strValue = strArray(0)
サンプルコードのダウンロード
サンプルコードの実行には Microsoft Visual Studio 2015 以上のバージョンが必要です。 2015以外のバージョンではプロジェクトを開いた際にファイルの変換が必要な場合があります。その場合は変換後に実行してください。検証環境
- Microsoft Visual Studio Professional 2015 Version 14.0.25431.01 Update 3
- Microsoft .NET Framework Version 4.6.01055
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))