【C#】インスタンス化したときに変数に入るのはインスタンスじゃない!

IT

こんにちは、C#勉強中のうなうなです!

オブジェクト指向のプログラミングって、初心者にはどうにもとっつきづらいですよね。

私はへっぽこなので、インスタンス化について最近まで盛大に勘違いしていたことがあります!!!

もしかしたら私と同じ勘違いをしている人がいるかもしれないので恥ずかしいけどシェアしておきます!!

インスタンス化したときに変数に入るのは・・・

クラスをインスタンス化するときに、newして変数の中に入れますよね。

Banana banana = new Banana();

↑こんな感じに。この場合Bananaクラスをインスタンス化してbananaという変数に代入しろと言っていますね。

私はこれまで、ここでいうbananaの中に、Bananaクラスのインスタンスが入っているものとばかり考えていました。

なんかBananaクラスのコンストラクタとかフィールドとかメソッドが詰まった感じのものが生まれて、bananaという名前の箱に入れられているのだと。

しかし!先輩エンジニアに聞いたら、そうではないらしいのです。

なんと、ここでいうbananaという変数の中に入るのはBananaクラスのインスタンスのあるメモリ上の領域を指すアドレスだったのです!!!

で、そのインスタンスの中にあるメソッドとかを使うときはそのアドレスを参照して、そのアドレスの場所に行って使っているそうです。

こういうの、勘違いしたままでもプログラムは動くっちゃ動くんですけどやっぱり正確に知っておいたほうがいいですね。

ああ、こういう「あれってそうだったのか!」っていう感覚が楽しくてやめられませんね。

道のりは長そうですが楽しみながらやっていきましょう。

それでは、また!

タイトルとURLをコピーしました