有一个名为 Int32.cs 的文件,其中包含
Int32
类型的 C# 代码。这对我来说似乎有些奇怪。C# 编译器如何编译 Int32
类型的代码呢?public struct Int32: IComparable, IFormattable, IConvertible {
internal int m_value;
// ...
}
但是在C#中这不是违法的吗?如果int
只是Int32
的别名,那么它应该在编译时失败并出现Error CS0523错误:
类型为 'struct1' 的结构体成员 'struct2 field' 导致结构布局中的循环。
编译器有些魔力,还是我完全偏离了轨道?
Int32
只是int
的别名,那么Int32
类如何使用int
?” - Tim M.System.Int32
具有类型为System.Int32
的字段,这通常会导致错误?显然:是的。问题几乎可以自己回答;通常会出现错误,但对于 int 的极特殊情况却没有错误,因此编译器必须有一个特殊情况。而且确实存在这样的情况。 - Eric Lippert