redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

(小ネタ)拡張メソッドを使用する場合も、Nullチェックは必要です!

IEnumerableインターフェイスのAnyメソッドを使用した時に、変数の値がnullでエラーになった。Anyメソッドは拡張メソッドなので、変数がnullでエラーになるのはおかしいのでは?と思ったが、答えは意外なところに。

C#で変数の値がnullで落ちる場合に投げられる例外は、System.NullReferenceException である。

それで、今回投げられた例外を良く見てみると、System.ArgumentNullException であった。これは、引数がnullだったら投げる例外なので、つまり拡張メソッドの中でnullと判定されて投げられた例外だったということ。

基本的な事でした。拡張メソッドを使用する場合も、nullチェックは必要という事ですね。