c# - 为什么结构不能包含可为空的循环引用?

标签 c# .net struct circular-reference

我理解为什么结构不能包含会导致逻辑内存问题的循环引用,但为什么可为 null 的引用不能规避此限制?例如:

struct Foo
{
    Foo? bar;
}

显然,如果不小心,这很容易导致堆栈溢出和循环引用,但是 bar 不应该是指向另一个 Foo 实例的指针,并默认为 null?或者(更有可能)我不明白可空值类型在内存中的布局方式吗?

(我的背景知识主要包括来自 this question and answers 的信息。)

最佳答案

不,不完全是。可空值类型实际上是 Nullable<> 的一个实例以值类型作为泛型参数。问号只是简写。

Nullable是一个结构,因此是一个值类型。因为它保留了对 Foo 的引用struct,你仍然有一个由值类型组成的循环引用。

关于c# - 为什么结构不能包含可为空的循环引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8141812/

相关文章:

c# - int[,] 的数独求解器算法

c# - 避免在 asp.net 中的按钮单击事件期间刷新页面

c# - StreamReader 和读取 XML 文件

c# - 给定一个 DateTimeZone 和两个 Instants,确定 LocalTime 是否落在两个 Instants 之间

c++ - 结构中的类对象数组

c# - 抽象数据类型(有时)是个好主意吗?

c# - 使用 Windows.Security.Cryptography.RSACryptoServiceProvider;在 Windows Phone 8.1 或通用应用程序中

.net - 确定是否安装了 .NET 3.5 的最佳方法

c - 如何以非标准方式在 C 中键入定义结构

c - 如何在输出中获得 0?