int vs Int32.它们真的是别名吗?

ava*_*ime 3 .net c# value-type

在查看Int32的源代码,同时做了一些研究,为什么我的DataContractSerializer不会序列化我的结构但是当使用int它工作正常时,我遇到了一些奇怪的代码

public struct Int32 : ...
{
   internal int m_value;

   public const int MaxValue = 0x7fffffff;
Run Code Online (Sandbox Code Playgroud)

如果Int32和int是别名,为什么在Int32内部声明int?

Cod*_*aos 5

intInt32此问题无关.显示字段int只是因为您用来查看它的工具在显示它们时用别名替换这些类型.如果你看一下使用较低级别的工具,你会发现它不知道int,只有Int32.

问题是Int32struct包含一个Int32字段.

" int站在什么地方?" "你很聪明,年轻人,非常聪明,"老太太说."但它int一直在下降!"

这个问题的解决方案很神奇.运行时知道它Int32是什么,并给它特殊的处理,避免无限递归.您不能编写将自身包含为字段的自定义结构.Int32是内置类型,没有普通结构.为了一致性,它只是作为结构出现.