在对象之间共享引用

JSB*_*ոգչ 4 c# reference

我想让多个对象通过私有字段共享一个引用,这样任何对象都可以分配给该字段,并且更新的字段将被共享该引用的其他对象看到。我最初希望做的是:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

但当然你不能这样使用refref仅用于方法参数。静态字段不起作用,因为并非所有 SomeObject实例都应该引用同一个对象——而是应该在构造函数中设置有问题的对象。

显然我可以通过添加一个简单的包装类来解决这个问题。但是有更好的方法吗?SharedReference<T>我可以使用某种课程吗?

更新,因为大多数答案都误解了我的要求。我知道_data字段包含一个参考原来的DataObject。我想要的是另一个层次的间接性。我希望能够在一个实例中更改我指向的对象,并让使用相同引用创建的其他实例获取新值。正如更新后的代码示例所示,我想分配给_data,并_data在其他实例中有效地更改 的值。

And*_*zub 5

我不知道您可以使用任何类,但我似乎很容易实现您自己的SharedReference<T>类。

像这样的东西:

public sealed class SharedReference<T>
    where T : class
{
    public T Reference
    {
        get; set;
    }
}
Run Code Online (Sandbox Code Playgroud)