为什么Boolean不抛出StackOverflowException?

时间:2015-09-03 18:31:08

标签: c#

我在http://referencesource.microsoft.com/#mscorlib/system/boolean.cs上找到了布尔源代码:

public struct Boolean
{
    ...
    private bool m_value;
    ...
}

为什么它不抛出StackOverflowException?

1 个答案:

答案 0 :(得分:4)

这可行的原因是因为bool和System.Boolean类型实际上是不同的。

原始bool类型是一个存储1个字节的内置类型。

System.Boolean类型用作基本类型的对象包装器,并实现IComparable和IConvertable接口。实现此包装器以紧密表示基本类型,因此它们可以在逻辑上互换。

作为构建在Common Type System上的.NET Framework用户,我们只是将它们视为相同,因为在我们的例子中,C#编译器将“bool”关键字视为System.Boolean类型的别名,你看到在mscorlib.dll中实现。