一直在浏览.NET Framework Reference Source的 .NET 源代码,只是为了好玩。并发现了一些我不明白的东西。
有一个Int32.csInt32
文件,其中包含用于类型的 C# 代码。不知何故,这对我来说似乎很奇怪。C# 编译器如何为Int32
类型编译代码?
public struct Int32: IComparable, IFormattable, IConvertible {
internal int m_value;
// ...
}
但这在 C# 中不是非法的吗?如果int
只是 的别名 Int32
,则它应该无法编译并出现错误 CS0523:
“struct1”类型的结构成员“struct2 field”导致结构布局中的循环。
编译器中有什么魔力,还是我完全偏离了轨道?