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链表样式?还是有更好的办法?

c# -合并同一个类的两个对象并更新所有引用

那天一大早我只能想到两种方法:

  • 不要总是分发引用使用属性返回电流参考
  • 实现OnFooChange事件并将更改发布给所有人来自Bar类/实例的相关方

hth

马里奥