请问以下实现接口并暴露为属性的C#代码是否会产生循环引用?
这段C#代码是否会产生循环引用?
这段代码本身不会自动产生循环引用,它只是定义了类型的结构,循环引用的形成需要实际对象实例之间建立互相指向的引用关系,具体分析如下:
- 循环引用的核心是对象实例间的互相持有:比如你创建
MyClass的实例objA,然后把objA自身赋值给objA.MyInterface,或者创建两个MyClass实例objA和objB,让objA.MyInterface = objB同时objB.MyInterface = objA,这种情况下才会形成循环引用。 - 当前代码里的
MyClass虽然有一个IMyInterface类型的属性,但这个属性默认是null,只要不手动将指向自身或其他互相指向的对象赋值给它,就不会触发循环引用。 AnotherClass仅实现了接口,没有持有任何对象引用,它的实例不会参与形成循环引用。
内容的提问来源于stack exchange,提问作者Bug
相关产品推荐
相关产品推荐

