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

Why does `Int32` use `int` in its source code?

为什么 Int32 在其 source code 中使用 intInt32 在 C# 中不等于 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 之间也存在同样的问题。

intbool 等分别是 Int32Boolean 等内置类型的简单别名。它们是 shorthand,因此使用它们是有意义的。即使在他们自己的定义中。

别名内置于编译器中,因此不会出现 "chicken and egg" 必须先编译 Int32 才能访问 int 的情况。 int 没有 "original source code"。 "source" 用于 Int32 并在 CLR 内置功能(用于处理基元)和框架(用于定义操作这些基元的功能)之间共享。由于 this answer to a duplicate question explainsInt32 的来源不是类型本身的有效定义;那是内置在 CLR 中的。因此,编译器必须在该文件中捏造通常非法使用 int 以允许 Int32 类型具有功能。