gpt4 book ai didi

c# - 在对象之间共享引用

转载 作者:行者123 更新时间:2023-11-30 14:42:29 25 4
gpt4 key购买 nike

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

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 的值在其他情况下。

最佳答案

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

像这样:

public sealed class SharedReference<T>
where T : class
{
public T Reference
{
get; set;
}
}

关于c# - 在对象之间共享引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com