naw*_*fal 8 c# struct class circular-dependency cyclic-reference
public struct Unit
{
Unit u;
}
Run Code Online (Sandbox Code Playgroud)
原因:
类型为"单位"的结构成员"Unit.u"会在结构布局中生成一个循环.
但
public class Unit
{
Unit u;
}
Run Code Online (Sandbox Code Playgroud)
编译.我理解我认为的问题.引用Unit
对象时将形成无限循环,因为它必须初始化另一个成员Unit
,依此类推.但是为什么编译器只是为了限制问题structs
呢?这个问题也不存在class
吗?我错过了什么吗?
Jon*_*eet 21
问题在于布局.
何时Unit
是结构,a的任何值Unit
都必须包含相同类型的另一个值(因此大小相同),无限制.这不可能.我想你可以争辩说,没有其他字段,字段Unit
应该不占用内存,所以你可以在其中包含它 - 但我相信CLR的工作方式确保所有结构占用至少1个字节...
何时Unit
是类,Unit
对象只需包含对另一个对象的引用Unit
.没有存储问题,并且值可以为null.
可以这样想:你不能拥有一栋房子,里面有另一栋用同一块蓝图建造的房子,但你当然可以买一幢房子,里面有一张纸,上面有类似房子的地址......