C#:在对象之间创建强引用,而不引用另一个对象

Koe*_*enJ 12 c#

假设我有2个类,Foo和Bar.Foo没有(也没有)与Bar的关系.

但是,我想要一个bar实例保持活着,只要它的foo实例保持活着.有没有办法这样做,没有foo实际引用吧?

谢谢,Koen

dtb*_*dtb 16

看看ConditionalWeakTable类.

使编译器能够将对象字段动态附加到托管对象.

它本质上是一个字典,其中键和值都是WeakReference,只要键处于活动状态,该值就会保持活动状态.

例如,您可以定义一个

ConditionalWeakTable<Foo, Bar> table
Run Code Online (Sandbox Code Playgroud)

并添加一个Foo/Bar对.只要存在对Foo实例的引用,Bar实例就会保持活动状态.您可以通过查看表找到Foo实例的Bar实例.