public struct Unit
{
Unit u;
}
Causes:
“Unit”类型的结构成员“Unit.u”导致结构中发生循环
布局。
But
public class Unit
{
Unit u;
}
编译。我明白我想的问题。引用a时会形成死循环Unit
对象,因为它必须初始化另一个成员Unit
等等。但为什么编译器只是为了限制这个问题structs
?问题是否仍然存在class
也?我错过了什么吗?
问题在于layout.
When Unit
是一个结构体,a 的任何值Unit
必须包含相同类型(因此大小相同)的另一个值,无穷无尽。这不可能。我想你可能会争辩说,没有其他领域,领域Unit
不应该占用任何内存,所以你could将其包含在其自身中 - 但我相信 CLR 的工作方式可确保所有结构至少占用 1 个字节...
When Unit
是一个类,一个Unit
对象只需要包含一个参考到另一个Unit
目的。没有存储问题,并且该值一开始可以为空。
可以这样想:你不可能拥有一栋房子,其中包含另一栋按照相同蓝图建造的房子,但你当然可以拥有一栋房子,其中包含一张纸,上面有类似房子的地址......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)