我在http://referencesource.microsoft.com/#mscorlib/system/boolean.cs上找到了布尔源代码:
public struct Boolean
{
...
private bool m_value;
...
}
为什么它不抛出StackOverflowException?
答案 0 :(得分:4)
这可行的原因是因为bool和System.Boolean类型实际上是不同的。
原始bool类型是一个存储1个字节的内置类型。
System.Boolean类型用作基本类型的对象包装器,并实现IComparable和IConvertable接口。实现此包装器以紧密表示基本类型,因此它们可以在逻辑上互换。
作为构建在Common Type System上的.NET Framework用户,我们只是将它们视为相同,因为在我们的例子中,C#编译器将“bool”关键字视为System.Boolean类型的别名,你看到在mscorlib.dll中实现。