我想让多个对象通过私有字段共享一个引用,这样任何对象都可以分配给该字段,并且更新的字段将被共享该引用的其他对象看到。我最初希望做的是:
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)
但当然你不能这样使用ref:ref仅用于方法参数。静态字段不起作用,因为并非所有 SomeObject实例都应该引用同一个对象——而是应该在构造函数中设置有问题的对象。
显然我可以通过添加一个简单的包装类来解决这个问题。但是有更好的方法吗?SharedReference<T>我可以使用某种课程吗?
更新,因为大多数答案都误解了我的要求。我知道_data字段包含一个参考原来的DataObject。我想要的是另一个层次的间接性。我希望能够在一个实例中更改我指向的对象,并让使用相同引用创建的其他实例获取新值。正如更新后的代码示例所示,我想分配给_data,并_data在其他实例中有效地更改 的值。
我不知道您可以使用任何类,但我似乎很容易实现您自己的SharedReference<T>类。
像这样的东西:
public sealed class SharedReference<T>
where T : class
{
public T Reference
{
get; set;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |