C#のクラスとインスタンスをメモリ割り当ての図で理解する

広告

Studentクラスは「ひな形」

Student クラスは、NameScore を持つためのひな形です。new Student() を実行すると、メモリ上に実体が作られます。この実体をオブジェクト、またはインスタンスと呼びます。

student1とstudent2は別々のインスタンスを参照する

Studentクラスからstudent1とstudent2の2つのインスタンスが作られ、それぞれ別のメモリ上の実体を参照するイメージ図

student1 は「田中・80点」のインスタンスを、student2 は「山田・90点」のインスタンスを参照しています。同じクラスから作っても、それぞれのデータは別々です。

図の番地は説明用

図の「101番地」「300番地」は、メモリ上の場所を理解しやすくするための説明用イメージです。実際のC#では、student1student2 が持つ参照を通してインスタンスを扱います。

もう少し詳しく:参照変数とメモリのイメージ

student1student2 が持っているのは、インスタンスそのものではなく、インスタンスを指し示す「参照」です。次の図では、参照変数とメモリ上の実体の関係を、もう少し詳しく表しています。

student1とstudent2の参照変数、Studentクラス、メモリ上の2つのインスタンスの関係を詳しく示した図
参照変数とインスタンスの関係を詳しくしたイメージ

※ この図について:図のスタック領域・ヒープ領域や「101番地」「300番地」は、仕組みを理解しやすくするための概念図です。実際の配置やアドレスは、.NETの実行環境によって管理されます。

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

広告

C#

Posted by hidepon