NullReferenceException
null参照のオブジェクトにアクセスした場合に発生するC#の例外
概要
System.NullReferenceExceptionは、C#で最も頻繁に発生する例外の1つです。値がnullのオブジェクト参照に対してメンバーアクセスを行った場合に発生します。
エラーメッセージ
System.NullReferenceException: Object reference not set to an instance of an object.
at MyApp.Program.Main(String[] args) in Program.cs:line 12
原因
- 初期化されていない変数: オブジェクトを初期化せずにメンバーにアクセスしている
- メソッドの戻り値がnull: nullを返す可能性があるメソッドの結果をそのまま使用
- LINQの結果がnull:
FirstOrDefault()等がnullを返した結果をそのまま使用 - JSONデシリアライズ: デシリアライズ結果のプロパティがnullになっている
解決策
1. null条件演算子(?.)を使用する
nullの可能性がある参照に安全にアクセスする。
| |
2. nullable参照型を有効にする(C# 8.0以降)
コンパイラにnullの可能性を検出させる。
| |
| |
3. LINQでnullを安全に扱う
| |
4. ArgumentNullExceptionでガード句を実装する
メソッドの入口でnullチェックを行う。
| |
5. required修飾子を使用する(C# 11以降)
オブジェクト初期化時のnull忘れを防ぐ。
| |
関連エラー
- InvalidOperationException - 無効な操作で発生
- ArgumentOutOfRangeException - 範囲外アクセスで発生
C# の他のエラー
この記事は役に立ちましたか?