为什么`Int32`在其源代码中使用`int`?

时间:2015-06-08 10:53:31

标签: c# int32 reference-source

为什么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);

        ...
    }

Booleanbool之间也存在同样的问题。

1 个答案:

答案 0 :(得分:7)

intbool等只是内置类型的别名,例如Int32Boolean。它们是速记,因此使用它们是有意义的。甚至在他们自己的定义中。

别名内置于编译器中,因此在Int32可访问之前,不需要编译int的“鸡和鸡蛋”情况。 int没有“原始源代码”。 “源”用于Int32,并在CLR中构建的功能(用于处理原语)和框架(用于定义操作这些原语的功能)之间共享。作为this answer to a duplicate question explainsInt32的来源不是该类型本身的有效定义;这是内置于CLR中的。因此,编译器必须捏造该文件中int的正常非法使用,以允许Int32类型具有功能。