c# -合并同一个类的两个对象并更新所有引用
本文关键字:对象 两个 更新 引用 同一个 合并 | 更新日期: 2023-09-27 17:49:14
我有一些Foo对象包含在Bar对象中:
class Foo
{
int uniqueId; // every Foo has a different ID.
List<int> data;
}
class Bar
{
Foo foo = new Foo();
}
有时我想合并属于不同bar的Foo对象,如下所示:
public void MergeWith(Bar otherBar)
{
this.foo.uniqueId = otherbar.foo.uniqueId;
this.foo.data.AddRange(otherbar.foo.data);
otherBar.foo = this.foo;
// Now both Bar objects refer to the same Foo, which contains all the data.
}
Bar bar1;
Bar bar2;
bar1.MergeWith(bar2);
这很好。问题是这些Bar对象已经把它们的Foo
对象的引用传递给了Baz
对象。Baz
有一个List<Foo>
,它是从多个来源收集的。
如何让Baz
对象知道它们的Foo
对象何时过时?Foo
对象是否应该引用其"更新"的Foo
链表样式?还是有更好的办法?
那天一大早我只能想到两种方法:
- 不要总是分发引用使用属性返回电流参考 实现OnFooChange事件并将更改发布给所有人来自Bar类/实例的相关方
hth
马里奥