Я хочу, чтобы несколько объектов совместно использовали ссылку через частное поле, чтобы любой из объектов мог назначить поле, и обновленное поле будет видно другим объектам, разделяющим эту ссылку.Изначально я надеялся сделать следующее:
class SomeObject
{
private ref DataObject _data;
public SomeObject(ref DataObject data)
{
_data = ref data; // or something similar
}
public ChangeData(DataObject newData)
{
_data = data;
// at this point, *other* SomeObject instances that were
// created with the same reference should also have _data == newData
}
}
Но, конечно, вы не можете использовать ref
таким образом: ref
только для параметров метода.И статическое поле не будет работать, так как не все SomeObject
экземпляры должны ссылаться на один и тот же объект - скорее, рассматриваемый объект должен быть установлен в конструкторе.
Очевидно, я мог бы решить эту проблему, просто добавив простой класс-обертку.Но есть ли лучший способ?Есть ли какой-нибудь класс SharedReference<T>
, который я могу использовать?
Обновление , так как большинство ответов неправильно поняли то, что я спрашивал.Я знаю, что поле _data
содержит ссылку на исходный DataObject
.То, что я хочу, это еще один уровень косвенности.Я хочу иметь возможность изменить объект, на который я указываю в одном экземпляре, и получить новое значение для других экземпляров, созданных с той же ссылкой.Как показывает обновленный пример кода, я хочу присвоить _data
и эффективно изменить значение _data
в других случаях.