【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かどうかをチェックして、結果を表示します。