【C#】「null許容型」解説

【C#】「null許容型」解説

null許容型とは

C#では、変数やオブジェクトの型に「null」を代入することができますが、基本的には「値型」に「null」を代入することはできません。例えば、整数型(int)の変数には「null」を直接代入することができません。そこで登場するのが「null許容型」です。

「null許容型」は、値型に「null」を代入できるようにするための型です。C# 2.0以降で導入され、主に「?」を使って表現します。例えば、int? と記述することで、「int」のnull許容型を作成することができます。

null許容型の使用方法

null許容型を使用するには、基本的には型名の後に「?」を付けます。これにより、その型は「null」を許容するようになります。例えば、次のように記述します。

int? number = null;

上記の例では、int型の変数numberにnullを代入しています。このように「?」を付けた型に対しては、nullを扱うことができるようになります。

基本的な例

では、具体的なコード例を見てみましょう。


using System;

class Program
{
    static void Main()
    {
        int? number = null;  // null許容型の変数
        if (number == null)
        {
            Console.WriteLine("numberはnullです");
        }
        else
        {
            Console.WriteLine("numberには値があります: " + number);
        }
    }
}
    

上記のコードでは、「number」というnull許容型の変数を宣言し、初期値を「null」に設定しています。その後、「if文」でnullかどうかをチェックし、nullであれば「numberはnullです」と表示します。

null許容型の注意点

null許容型にはいくつかの注意点があります。

  • 「null許容型」の変数は、nullか値を持っているかのどちらかです。値がない場合はnullとなります。
  • 通常の値型(intやdoubleなど)は、null許容型ではないため、nullを代入できません。しかし、「int?」などのnull許容型では、値を持っていない状態を表すためにnullを使います。
  • null許容型の値にアクセスしようとした場合、その変数がnullの場合にエラーが発生します。これを防ぐために、HasValueプロパティやGetValueOrDefaultメソッドを使用することが重要です。

null許容型の活用例

null許容型は、特にデータベースの操作やAPI通信など、データが欠損している可能性がある場合に便利です。


using System;

class Program
{
    static void Main()
    {
        // ユーザーから年齢を入力させる例
        int? age = null;
        
        Console.WriteLine("年齢を入力してください:");
        string input = Console.ReadLine();
        
        if (string.IsNullOrEmpty(input))
        {
            // 入力が空の場合はnull
            age = null;
        }
        else
        {
            // 入力がある場合はintに変換
            age = int.Parse(input);
        }

        if (age.HasValue)
        {
            Console.WriteLine("年齢は " + age.Value + " 歳です。");
        }
        else
        {
            Console.WriteLine("年齢が入力されませんでした。");
        }
    }
}
    

この例では、ユーザーから年齢を入力してもらう処理です。もし年齢が入力されなければnullが代入され、入力があればその値が変数に設定されます。その後、nullかどうかをチェックして、結果を表示します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です