为什么不允许实例类型的结构中的循环引用,但允许循环引用静态类型?

时间:2014-01-08 09:36:58

标签: c#

为什么我们可以在struct中使用静态循环引用而不是实例类型循环引用?

struct C
{
    //following line is not allowed. Compile time error.
    // it's a non static circular reference.
    public C c1;
    //But this line compiles fine.
    //static circular reference.
    public static C c2;
}

1 个答案:

答案 0 :(得分:6)

非静态引用失败是因为您试图使结构成为其自身的一部分,从而导致循环引用。

静态声明有效,因为c2不是结构本身的一部分;每当你声明例如C fooc2不会影响foo的大小。