C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のArgumentNullExceptionとは?発生原因と対処法を解説

ArgumentNullExceptionは、null参照を許容しないメソッドに、引数としてnullが渡されたときにスローされる例外です。

C#では、メソッドの引数としてnullを受け付けない場合があり、そのようなメソッドにnullを渡すと、この例外が発生してプログラムが中断されます。

ArgumentNullExceptionの発生例

具体的な例を見てみましょう。以下のコードでは、int.Parse()メソッドにnull値を渡しています。このメソッドはnullを有効な引数として受け付けないため、ArgumentNullExceptionがスローされます。

サンプルコード

using System;
class Demo {
   static void Main() {
      string val = null;
      int res = int.Parse(val); // ここで例外がスローされる
   }
}

実行結果(エラー出力)

null値を渡しているため、上記のプログラムをコンパイル・実行すると、次のようなエラーが出力されます。

Unhandled Exception:
System.ArgumentNullException: Value cannot be null.

ArgumentNullExceptionへの対処法

この例外を防ぐには、主に以下の方法が有効です。

  • 事前にnullチェックを行う: メソッドに渡す前にif (val == null)などの条件でnullかどうかを確認します。
  • TryParseを使用する: int.TryParse()を使えば、変換に失敗しても例外がスローされず、戻り値で成否を判定できます。
  • ArgumentNullException.ThrowIfNull()を活用する: .NET 6以降では、独自メソッド内で引数のnullチェックを簡潔に記述できるヘルパーメソッドも提供されています。

例外の仕組みを理解し、nullチェックを適切に行うことで、堅牢なC#アプリケーションを開発しましょう。

  1. C#のジェネリックメソッドからnullを返す方法:default(T)の使い方

    ジェネリック(Generics)を使うと、フィールド、メソッド、パラメータなどの型をプレースホルダー(型パラメータ)として持つクラスを定義できます。これらのプレースホルダーは、コンパイル時に具体的な型へと置き換えられます。ジェネリックは山括弧 <> を使って定義するのが基本です。C#のコレクションにおける主な制限の一つは、効果的な型チェックが行えないことです。C#ではすべてのクラスがobject基底クラスから派生しているため、コレクションには原理的にどんなオブジェクトでも格納できてしまいます。さらに、通常のメソッドとは異なり、ジェネリックメソッドから単純にnullを返すことはできま

  2. SQL Serverの関数(FUNCTION)とは?作成・削除の基本構文と実例を解説

    SQL Serverにおける関数(Function)とは、複数のステートメントをひとまとめにし、再利用を目的としてデータベース内に作成されるオブジェクトです。関数はデータベースに保存され、パラメータを受け取ったり、処理結果の値を返したりすることができます。 この記事では、SQL Serverで関数を作成・削除するための構文と具体的なサンプルコードを、初心者にもわかりやすく解説します。 CREATE FUNCTION(関数の作成) 基本構文 SQL Serverで関数を作成するには、以下の構文を使用します。 CREATE FUNCTION [schema_name.] function_n