人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!C#のLinqをさらに学びたい方へ
C#のLinqを理解して頂くために参考書を執筆致しました!
Linqの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け
NullReferenceExceptionの対処法
NullReferenceExceptionは、null参照を参照しようとしたときに発生するエラーです。
これは、オブジェクトがまだ作成されていないか、明示的にnullに設定されている場合に発生します。

C#のエラー一覧はコチラ
-
-
【C#】よく発生するエラー一覧10選 エラーの発生事例と対処方法をみてみよう!
この記事はChatGPTで画像の挿入、ソースコードの形式も含めて 90%~100%作成されています。作り方は画像をクリック! 人生が変わるオンラインサロン! 月3万副業収入が得られる!Mサロン!31日 ...
続きを見る
ケース1: オブジェクトがまだ作成されていない
まず、オブジェクトがまだ作成されていない場合について見ていきましょう。
1 2 3 4 5 6 7 8 9 10 |
using System; class Program { static void Main() { string str = null; Console.WriteLine(str.Length); } } |
上記のコードでは、"str"という文字列変数を宣言していますが、具体的な値を設定していません。
そのため、str.Lengthを参照しようとすると、NullReferenceExceptionが発生します。
出力結果
System.NullReferenceException: Object reference not set to an instance of an object.
これを解決するためには、strに具体的な値を設定する必要があります。
1 2 3 4 5 6 7 8 9 10 |
using System; class Program { static void Main() { string str = "Hello, world!"; Console.WriteLine(str.Length); } } |
このようにstrに具体的な文字列を設定することで、str.Lengthを参照することができ、NullReferenceExceptionは発生しません。
出力結果
13

ケース2: 明示的にnullに設定されている
次に、明示的にnullに設定されている場合について見ていきましょう。
1 2 3 4 5 6 7 8 9 10 11 |
using System; class Program { static void Main() { string str = "Hello, world!"; str = null; Console.WriteLine(str.Length); } } |
上記のコードでは、初めにstrに具体的な文字列を設定していますが、その後でstrをnullに設定しています。
そのため、str.Lengthを参照しようとすると、NullReferenceExceptionが発生します。
System.NullReferenceException: Object reference not set to an instance of an object.
これを解決するためには、strをnullに設定した後でstr.Lengthを参照しないようにします。
1 2 3 4 5 6 7 8 9 10 11 |
using System; class Program { static void Main() { string str = "Hello, world!"; Console.WriteLine(str.Length); str = null; } } |
このようにstrをnullに設定する前にstr.Lengthを参照することで、NullReferenceExceptionは発生しません。
出力結果
13

ケース3: Null合体演算子を使用する
Null合体演算子を使用して、NullReferenceExceptionを防ぐ方法もあります。
1 2 3 4 5 6 7 8 9 10 |
using System; class Program { static void Main() { string str = null; Console.WriteLine(str?.Length ?? 0); } } |
上記のコードでは、Null合体演算子(??)を使用しています。これは、左辺がnullでない場合には左辺の値を、nullである場合には右辺の値を返す演算子です。
このため、strがnullの場合でもNullReferenceExceptionは発生せず、0が出力されます。
出力結果
0

ケース4: Null条件演算子を使用する
Null条件演算子を使用して、NullReferenceExceptionを防ぐ方法もあります。
1 2 3 4 5 6 7 8 9 10 11 |
using System; class Program { static void Main() { string str = null; int? length = str?.Length; Console.WriteLine(length.HasValue ? length.Value : 0); } } |
上記のコードでは、Null条件演算子(?.)を使用しています。これは、nullでない場合にだけアクセスを行い、nullの場合にはnullを返す演算子です。
このため、strがnullの場合でもNullReferenceExceptionは発生せず、0が出力されます。
出力結果
0

ケース5: nullチェックを行う
直接的な方法として、nullチェックを行うこともできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System; class Program { static void Main() { string str = null; if (str != null) { Console.WriteLine(str.Length); } else { Console.WriteLine(0); } } } |
上記のコードでは、strがnullでない場合にだけstr.Lengthを参照しています。
そのため、strがnullの場合でもNullReferenceExceptionは発生せず、0が出力されます。
出力結果
0

まとめ
以上、C#でNullReferenceExceptionが発生したときの対処法について解説しました。
対策方法としては、オブジェクトが作成されていることを確認する、nullに設定する前に必要な操作を行う、Null合体演算子やNull条件演算子を使用する、nullチェックを行う、などがあります。
これらの方法を使い分けることで、NullReferenceExceptionを適切に対処できます。

最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!

C#のエラー一覧はコチラ
-
-
【C#】よく発生するエラー一覧10選 エラーの発生事例と対処方法をみてみよう!
この記事はChatGPTで画像の挿入、ソースコードの形式も含めて 90%~100%作成されています。作り方は画像をクリック! 人生が変わるオンラインサロン! 月3万副業収入が得られる!Mサロン!31日 ...
続きを見る
人生が変わるオンラインサロン!
月3万副業収入が得られる!Mサロン!31日間無料体験!C#のLinqをさらに学びたい方へ
C#のLinqを理解して頂くために参考書を執筆致しました!
Linqの演習問題はこちらの参考書に載せているので、問題を解いて理解を深めたい方はこちらの参考書チェックしてください!
下記の画像をクリック!!kindleunlimitedの会員であれば無料で見れます!
⇩初心者向け ⇩中級者向け