はじめに
こんにちは、東京アプリケーションシステム 第二ソリューション部のK.T.です。
今回は、System.NullReferenceExceptionを回避するということで、null合体演算子を使用した回避方法を紹介したいと思います。
環境
.NET Framework 4.8
実装
下記のコードを実行すると、指定された文字列の長さをコンソールに出力する際に、System.NullReferenceExceptionの例外が発生してしまいます。
これは、nullオブジェクト参照のメンバーにアクセスしたためです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; class Program { static void Main(string[] args) { var keywords = new string[] { "hoge", null, "fugafuga", "piyopiyopiyo" }; foreach (var keyword in keywords) { // throw System.NullReferenceException Console.WriteLine(keyword.Length); } Console.ReadKey(); } } |
この例外を回避する方法は、いくつかありますが、今回使用するのは、null合体演算子です。
null合体演算子を使用すると、下記のように書くことができます。
1 |
Console.WriteLine(keyword?.Length); |
上記の変更を適用し、実行するとSystem.NullReferenceExceptionはthrowされず、下記のような結果となります。
1 2 3 4 |
4 8 12 |
まとめ
null合体演算子を使用すると、インスタンス自体がnullの場合に、メンバーにアクセスして、System.NullReferenceExceptionがthrowされるのを回避できます。
今回のようにnullを渡して問題ない関数には、今回紹介したような回避方法も可能です。
他の使い方もあるので、興味のある方は、null合体演算子について調べてみてはいかがでしょうか。