.net中的原始类型

时间:2014-07-29 06:25:06

标签: c# .net int clr primitive-types

在.net中,AIUI int只是System.Int32的语法糖,是struct

csharp> typeof(System.Int32).IsPrimitive 
true
csharp> typeof(System.Int32).Equals(typeof(int))
true

我在消息来源中看到:

https://github.com/mono/mono/blob/master/mcs/class/corlib/System/Int32.cs http://referencesource.microsoft.com/#mscorlib/system/int32.cs

System.Int32刚刚定义为成员m_value本身就是int - 这是如何运作的?当然,我们正在定义int参考自己?那么我们如何避免循环定义呢?

1 个答案:

答案 0 :(得分:15)

Dixin的博客文章Understanding .NET Primitive Types中有一个很好的解释。

答案可以在生成的IL中找到。他的以下问题实际上就是你问题的答案:

  

那么int32(IL),int(C#)和System.Int32(C#)之间的关系是什么?

在IL中可以发现int内的struct是:

.field assembly int32 m_value

因此int32实际上存在于.NET之外,并且是汇编中.NET int的实际表示。