C# 两个接口';s实例可以相互引用吗?

C# 两个接口';s实例可以相互引用吗?,c#,interface,circular-reference,C#,Interface,Circular Reference,使用C# 代码是否工作正常,不会导致循环引用问题 为什么不呢?撇开语法不谈,自相似结构在计算机科学中随处可见。考虑二叉树:每个节点都有两个其他树的引用(用它们的根节点表示)。这样的树的一种典型的方法是用一个不是一个构造的类型,而是两个对该类型的其他实例的引用。 更一般地说,类型系统中的循环与对象图中的循环不同。通常第一个是设计的,但第二个有办法变成bug。你能详细说明为什么对象图周期通常会变成bug吗?当然,在序列化等特定情况下,周期确实会导致问题,但一般来说,它们经常发生,有时甚至作为设计模式

使用C#


代码是否工作正常,不会导致循环引用问题

为什么不呢?撇开语法不谈,自相似结构在计算机科学中随处可见。考虑二叉树:每个节点都有两个其他树的引用(用它们的根节点表示)。这样的树的一种典型的方法是用一个不是一个构造的类型,而是两个对该类型的其他实例的引用。
更一般地说,类型系统中的循环与对象图中的循环不同。通常第一个是设计的,但第二个有办法变成bug。

你能详细说明为什么对象图周期通常会变成bug吗?当然,在序列化等特定情况下,周期确实会导致问题,但一般来说,它们经常发生,有时甚至作为设计模式的一部分(称为MVP/MVVM)。这只是因为(以我的经验)它们是意外的。天真地使用递归函数遍历这样一个循环会导致无限下降。但是,如果您自己编写的代码可能会在对象图中遇到一个循环,这里就有。这似乎与接口无关。AA可以接受AA。这将是最后一个元素必须为空的链表。
Interface A,
Interface B,

Class AA:A
{

 public AA(A a)
{
 //...
}

}

Class BB:B
{

public BB(B b)
{
  //...
}

}