为什么Int32
在其source code中使用int
? C#中Int32
是否等于int
?那么int
的原始源代码是什么?我很困惑..
[Serializable]
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)]
[System.Runtime.InteropServices.ComVisible(true)]
#if GENERICS_WORK
public struct Int32 : IComparable, IFormattable, IConvertible
, IComparable<Int32>, IEquatable<Int32>
/// , IArithmetic<Int32>
#else
public struct Int32 : IComparable, IFormattable, IConvertible
#endif
{
internal int m_value; // Here????
public const int MaxValue = 0x7fffffff;
public const int MinValue = unchecked((int)0x80000000);
...
}
Boolean
和bool
之间也存在同样的问题。
答案 0 :(得分:7)
int
,bool
等只是内置类型的别名,例如Int32
和Boolean
。它们是速记,因此使用它们是有意义的。甚至在他们自己的定义中。
别名内置于编译器中,因此在Int32
可访问之前,不需要编译int
的“鸡和鸡蛋”情况。 int
没有“原始源代码”。 “源”用于Int32
,并在CLR中构建的功能(用于处理原语)和框架(用于定义操作这些原语的功能)之间共享。作为this answer to a duplicate question explains,Int32
的来源不是该类型本身的有效定义;这是内置于CLR中的。因此,编译器必须捏造该文件中int
的正常非法使用,以允许Int32
类型具有功能。