nullとは何か?オブジェクトが「生まれる瞬間」を理解しよう

オブジェクト指向に入ると、必ず出てくる言葉が null です。

しかし多くの初学者が、

  • nullって何?
  • 何が「ない」の?
  • いつ生まれるの?

で混乱します。

今回は、次のコードを分解して理解します。

Person myChild;
myChild = new Person();

まずは「宣言」だけを考える

Person myChild;

これは何をしているのでしょうか?

これは

  • Person型の変数を用意する
  • 名前は myChild

という意味です。

ここで重要なこと:

まだオブジェクトは存在していません。

参照型の場合、このときの値は

null

です。


nullとは何か

nullとは、

「何もない」

ではありません。

正確には:

参照先が存在していない状態

です。

イメージで言うと:

  • 箱はある
  • でも中身の住所がまだ書かれていない

という状態です。


次にnewを実行する

myChild = new Person();

ここで初めて、

  • メモリ上にPersonオブジェクトが作られる
  • そのアドレスがmyChildに入る

つまり、

ここで誕生します。

この瞬間がとても重要です。


まとめて書くとどうなる?

よく見る書き方はこちらです。

Person myChild = new Person();

これは実は、

Person myChild;
myChild = new Person();

を1行にまとめただけです。

初心者のうちは、

「宣言」と「生成」を分けて理解する方が安全です。


デバッグで確認してみよう

次のコードを書いて、ブレークポイントを置いてみてください。

Person myChild;
myChild = new Person();

1行目の後で止めると:

myChild = null

と表示されます。

2行目を実行した後は:

myChild = {Person}

となります。

これが「誕生の瞬間」です。


よくある誤解

誤解①

未実行だからnullになる

これは間違いです。

  • 実行前は、そもそも変数が存在していません
  • 宣言を実行した時点でnullになります

誤解②

nullは空っぽ

これも違います。

nullは

「参照先がない状態」

です。


今日のポイント

  • 宣言だけでは実体はない
  • そのときの値はnull
  • newを実行した瞬間にオブジェクトが生まれる
  • まとめて1行で書いても中身は同じ

この流れが理解できれば、

オブジェクト指向の基礎はクリアです。


訪問数 4 回, 今日の訪問数 4回

C#,null

Posted by hidepon