日期:2014-05-17  浏览次数:21008 次

疑惑中: 既然int就是System.Int32,那么所谓的装箱操作岂不是不存在的?
ArrayList在保存数组(例如若干个int整数)的时候需要装箱。但是既然int本身就是一个C#的语法,对应的存储就是System.Int32,那所谓的"装箱"岂不是一个不存在的操作?

整数变量总是用System.Int32保存的吗? 还是我的理解有误。

------解决方案--------------------
值类型  
引用类型


------解决方案--------------------
int和System.Int32是两个东西。
------解决方案--------------------
值类型->引用类型 装箱
引用类型->值类型 拆箱
------解决方案--------------------
int和int32一样???
------解决方案--------------------
引用:
int和System.Int32是两个东西。


System.Int32是.Net Framework对32位整数的标识,MSDN对这种类型标示的称呼是User Type。而int则是c#语言里面的特有称呼(这里它对应的.Net Framework里的System.Int32),MSDN对c#的int的称呼是Keyword。int就是System.Int32的别名而已

在.Net Framework运行库里,有一种最基础的数据类型,叫“基元类型(primitive)”。这种数据类型是只提供给.Net Framework内部使用,外面是看不见的。其实在真正微软的System.Int32的源码中,用到的应该是int32。但是由于int32不是c#提供的类型,所以Reflector会自动把int32逆向为c#的int,这也就是为什么我们会在System.Int32定义中看到int的存在了
------解决方案--------------------
再提醒一下引用类型赋值和值类型赋值有何区别
------解决方案--------------------
引用:
int和System.Int32是两个东西。


老大书念多了吧。。。是两个东西么? 请返编译他的原码。。。
------解决方案--------------------
.net 一切皆是对象
如果一个class,里面含有一个struct 
那个struct 装没装箱,想清楚这个就清楚了array
class A{
 public int d;
}
A a1=new A;
a1.d=100;//这里装箱了没?
------解决方案--------------------
首先我承认错误,int与System.Int32是一样的东西:
http://msdn.microsoft.com/en-us/library/5kzh1b5w(v=VS.100).aspx
其次,ArrayList的Add方法所用参数是Object类型的:
public virtual int Add(
Object value
)

所以在int转为Object时会发生装箱操作。