0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.Netのクラスオブジェクトの比較の謎について

Posted at

.Netが内部で管理しているメモリ上のオブジェクトと、どのオブジェクトがどの変数名なのかという紐づけがあり、それをC#などでプログラムで制御しています。
クラスの比較や代入の書式といったプログラム側からだとわかりずらいので、内部管理側の制御方法とプログラム記述といった順序でまとめてみました。

画像にまとめたものがわかりやすいので載せています。

クラスの比較.png

どうして「オブジェクト同士が同じか」というものが直接的に書かれたページが少ないのか、といった理由が雰囲気だけでも伝わればと思います。

.Netといっても、アセンブラやCでメモリ参照するというのと、概念に違いは無く、
そのプログラムはいったい、メモリ上に実在するデータの「どれ」を参照しているのか、ということをイメージする必要があります。

例えば、C#の関数の引数でclassオブジェクトを渡されたとき、その関数内で class USAinfo RA = new USAinfo(); として作ったとき。
引数のclassオブジェクトの参照先をこのRAの参照先にしたいのですが、

private void main()
{
class USAinfo MOTO = new USAinfo();
UMM(MOTO);
}

private void UMM(class USAinfo in_class_obj)
{
class USAinfo RA = new USAinfo();
in_class_obj = in_class_obj;
}
としても、あくまで『in_class_objの参照先が変わるだけ』なので、MOTOの参照先は変わりません。
そんな感じです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?