C#:在对象之间创建强引用,而不引用另一个对象
假设我有2个类,Foo和Bar。 Foo没有(也没有)与Bar的关系。
但是,我想要一个bar实例保持活着,只要它的foo实例保持活着。 有没有办法这样做,没有foo实际引用吧?
谢谢,Koen
看看ConditionalWeakTable类 。
使编译器能够将对象字段动态附加到托管对象。
它本质上是一个字典,其中键和值都是WeakReference,只要键处于活动状态,该值就会保持活动状态。
例如,您可以定义一个
ConditionalWeakTable table
并添加一个Foo / Bar对。 只要存在对Foo实例的引用,Bar实例就会保持活动状态。 您可以通过查看表找到Foo实例的Bar实例。
如果不确切地知道你想要实现什么,或者你的“活着”是什么意思,就很难提出建议。 通常,您不必担心托管对象的生命周期:当它们不再被引用时,它们会自然“死亡”。
但要执行您想要的操作,要么您的Foo
实例必须引用Bar
实例,要么其他一些对象必须引用它们才能创建链接。 它可以是作为System.Object
的Bar
实例的引用,即Foo
不需要知道Bar
Type。
如果SOMETHING有参考,那么只能最终确定栏。 让Foo告诉那个东西什么时候可以放开Bar吧。
你能在Foo类型中创建一个名为BarReference的公共对象字段吗?
Foo之外的人应该为这个属性设置适当的Bar实例。
只要存在对bar实例的引用,它就不会被GCed并且使用对象Foo对Bar类型一无所知。
上述就是C#学习教程:C#:在对象之间创建强引用,而不引用另一个对象分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1013141.html