我理解为什么结构不能包含会导致逻辑内存问题的循环引用,但为什么可为 null 的引用不能规避此限制?例如:
struct Foo
{
Foo? bar;
}
显然,如果不小心,这很容易导致堆栈溢出和循环引用,但是 bar
不应该是指向另一个 Foo
实例的指针,并默认为 null
?或者(更有可能)我不明白可空值类型在内存中的布局方式吗?
(我的背景知识主要包括来自 this question and answers 的信息。)
最佳答案
不,不完全是。可空值类型实际上是 Nullable<>
的一个实例以值类型作为泛型参数。问号只是简写。
Nullable
是一个结构,因此是一个值类型。因为它保留了对 Foo
的引用struct,你仍然有一个由值类型组成的循环引用。
关于c# - 为什么结构不能包含可为空的循环引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141812/