.Netが内部で管理しているメモリ上のオブジェクトと、どのオブジェクトがどの変数名なのかという紐づけがあり、それをC#などでプログラムで制御しています。
クラスの比較や代入の書式といったプログラム側からだとわかりずらいので、内部管理側の制御方法とプログラム記述といった順序でまとめてみました。
画像にまとめたものがわかりやすいので載せています。
どうして「オブジェクト同士が同じか」というものが直接的に書かれたページが少ないのか、といった理由が雰囲気だけでも伝わればと思います。
.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の参照先は変わりません。
そんな感じです。