Я не уверен в том, что называется операцией, которую я хочу сделать на C #, но я знаю, что это можно сделать на других языках.
Предположим, у меня есть три вара, и я установил для них одно и то же значение:
MyObject Ob1 = new MyObject(ID:1);
MyObject Ob2 = Ob1;
MyObject Ob3 = Ob1;
(предположим, что эти вары НЕ находятся в одном контексте, и я просто не могу заменить их одним, и я не могу знать, существуют ли они вообще. Их может быть одна, две или сотни, представляющие один и тот же объект ...)
Я знаю, что изменения, которые я вношу в объект с помощью Ob3
, фактически изменяют объекты в Ob1
и Ob2
(конечно, все они представляют один и тот же объект с идентификатором: 1).
Но если я назначу что-то для Ob3
, используя Ob3 = new MyObject(ID:2)
, это не изменит значения Ob1
и Ob2
, поскольку они будут продолжать представлять объект с идентификатором: 1.
// What happens:
Ob3 = new MyObject(ID:2);
// Ob3 is no longer the same as Ob1 and Ob2, wich are still the ID:1 object.
Я хочу назначить сразу все три переменные, например, когда я пишу соответствующий код для Ob3 = new MyObject(ID:2);
, все другие вары представляют объект с ID: 2, а не ID: 1 больше.
//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 # ??