C#で実行したい操作が何と呼ばれるかはわかりませんが、他の言語でも実行できることはわかっています。
3つの変数があり、それらを同じ値に設定するとします。
MyObject Ob1 = new MyObject(ID:1);
MyObject Ob2 = Ob1;
MyObject Ob3 = Ob1;
(これらの変数が同じコンテキストになく、単一の変数に置き換えることも、存在するかどうかもわかりません。同じオブジェクトを表す1つ、2つ、または数百の変数である可能性があります...)
Ob3
を介してオブジェクトに加えた変更は、実際にのオブジェクトOb1
を変更することを知っていますOb2
(もちろん、それらはすべてID:1の同じオブジェクトを表します)。
Ob3
ただし、を使用してに何かを割り当てると、とOb3 = new MyObject(ID:2)
の値は変更されません。これらはID:1でオブジェクトを表し続けるためです。Ob1
Ob2
// What happens:
Ob3 = new MyObject(ID:2);
// Ob3 is no longer the same as Ob1 and Ob2, wich are still the ID:1 object.
私がやりたいのは、対応するコードを書くときのように、3つの変数すべてを一度に割り当てることです。Ob3 = new MyObject(ID:2);
他のすべての変数は、ID:1ではなくID:2でオブジェクトを表すようになります。
//What I want:
Ob3 = new MyObject(ID:2); //using the suited operators I don't know
//And Ob1 and Ob2 become the ID:2 object as well.
C ++でポインターを使用して実行できることは知っていますが(明らかに、宣言と代入にいくつかの変更が加えられています)、管理されていない言語で物事を管理したくありません。それで、C#でその「逆方向」の割り当てを行う同様の方法はありますか?