カテゴリ: C# 更新日: 2025/06/28

C#のnullとNullable型とは?初心者向けにnull許容型の基本と使い方を徹底解説!

C#のnullとNullable型とは?null許容型の基本と使い方を解説
C#のnullとNullable型とは?null許容型の基本と使い方を解説

先生と生徒の会話形式で理解しよう

生徒

「C#で変数に値が入っていないことを表す方法ってありますか?」

先生

「はい、C#ではnullを使って『まだ値がない』という状態を表せますよ。」

生徒

「でも、int型とかにはnullを入れられないんですよね?」

先生

「その通りです。ですが、Nullable型を使えばintなどの数値型でもnullを使えるようになりますよ!」

1. C#のnullとは?

1. C#のnullとは?
1. C#のnullとは?

null(ヌル)とは、「何も値が設定されていない」という状態を表す特別な値です。C#では、参照型(クラスなど)の変数に値を入れないと、自動的にnullになります。

たとえば、人の名前を格納する変数を考えてみましょう。まだ名前がわからないときには、空欄(null)のままにしておきたいですよね?それをプログラム上で表現するのがnullです。


string name = null;

このように書くことで、「nameにはまだ何も入っていません」とC#に伝えることができます。

2. 値型はnullを使えない?

2. 値型はnullを使えない?
2. 値型はnullを使えない?

ここで重要なポイントがあります。C#には大きく分けて「参照型」と「値型」の2種類のデータ型があります。

  • 参照型:stringや配列、クラスなど
  • 値型:int(整数)、double(小数)、bool(真偽)など

参照型はnullを使えますが、値型はそのままではnullを代入できません。これは、int型などは常に値を持つ必要がある設計だからです。


int number = null; // エラーになります!

このままでは、まだ決まっていない年齢やスコアなどを表現できなくて不便ですよね。そこで登場するのが「null許容型(Nullable型)」です!

3. Nullable型(null許容型)とは?

3. Nullable型(null許容型)とは?
3. Nullable型(null許容型)とは?

Nullable型とは、通常の値型に「nullを入れられるようにする仕組み」です。C#では、?を使って簡単にNullable型を作ることができます。


int? age = null;

このように書くと、「年齢がまだ未定」という状態をプログラムで表すことができます。

このint?のような書き方は、正式にはNullable<int>という書き方と同じ意味です。


Nullable<int> age = null; // これでもOK

でも、int?の方が短くて読みやすいので、現代のC#プログラミングでは主にこちらが使われます。

4. Nullable型の値を使うときの注意点

4. Nullable型の値を使うときの注意点
4. Nullable型の値を使うときの注意点

Nullable型の変数を使うときには、「本当に中に値が入っているかどうか」を確認する必要があります。もし値が入っていない状態(null)のまま使おうとすると、エラーになります。


int? score = null;
Console.WriteLine(score.Value); // これは例外(エラー)が発生します!

このようなときは、HasValueというプロパティで値が入っているかどうかをチェックできます。


int? score = 80;

if (score.HasValue)
{
    Console.WriteLine("点数は " + score.Value + " 点です。");
}
else
{
    Console.WriteLine("点数はまだ未定です。");
}

点数は 80 点です。

5. null合体演算子(??)を使ってみよう

5. null合体演算子(??)を使ってみよう
5. null合体演算子(??)を使ってみよう

Nullable型を使うときによく登場するのが??(null合体演算子)です。これは「もしnullだったら、代わりの値を使う」という処理を簡単に書ける便利な記号です。


int? age = null;
int displayAge = age ?? 20; // ageがnullなら20を使う
Console.WriteLine("表示する年齢:" + displayAge);

表示する年齢:20

このように書くと、変数がnullでも安全にプログラムを動かすことができます。

6. nullとNullable型の活用例

6. nullとNullable型の活用例
6. nullとNullable型の活用例

現実のアプリでは、まだ入力されていないデータや未決定な値を扱うことがよくあります。たとえば、次のような例が考えられます。

  • ユーザーがまだ年齢を入力していない → int?を使ってnullで初期化
  • 商品のレビューがまだ付いていない → double?で平均評価をnullに
  • オプションの電話番号 → string?でnullを許容

int? userAge = null;
if (!userAge.HasValue)
{
    Console.WriteLine("年齢が未入力です。");
}

年齢が未入力です。

このように、nullとNullable型は、柔軟なプログラムを作るうえでとても大切なしくみです。

カテゴリの一覧へ
新着記事
COBOLの変数名の付け方を解説!初心者でもわかる命名規則とコツ
C#のbreakとcontinueの使い方!ループ制御の基本テクニック
COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
C#のforeach文の基本!配列やコレクションを簡単に繰り返し処理する方法
人気記事
No.1
Java&Spring記事人気No1
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
No.2
Java&Spring記事人気No2
C#のwhile文の使い方!条件付きループを基礎から学ぼう
No.3
Java&Spring記事人気No3
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.4
Java&Spring記事人気No4
COBOLのINDEXED BY句を使ったインデックス管理の基本をやさしく解説!