比如 int a=3;
那么这个3存放在System.Int32结构的什么地方呢?
更明确地说,根据msdn的说明,System.Int32的内容是17个方法,两个字段(publicconstint MaxValue 和publicconstint MinValue),以及对一些接口的实现。没有一个字段是储存数值的。那么我的问题就是这个int a=3中的3存放在哪里?
附msdn:http://msdn.microsoft.com/zh-CN/library/system.int32.aspx
那么这个3存放在System.Int32结构的什么地方呢?
更明确地说,根据msdn的说明,System.Int32的内容是17个方法,两个字段(publicconstint MaxValue 和publicconstint MinValue),以及对一些接口的实现。没有一个字段是储存数值的。那么我的问题就是这个int a=3中的3存放在哪里?
附msdn:http://msdn.microsoft.com/zh-CN/library/system.int32.aspx
如果在函数中定义的,一般在堆栈上,但是也可能被优化到寄存器中。
如果是成员变量,一般在托管堆上。
如果用了unsafe,做p-invoke,它也可以跑到非托管的堆上。
struct A
{
int no;
}
A a=new A();
a.no=3;
那么这个3存放在a这个结构的一个int 类型名为no的字段中。
但是
struct Int32
{
publicconstint MaxValue;
publicconstint MinValue;
其他的方法;
}
他只有两个字段,还是const的。
那么Int32 b=3;
那么这个3按理说应该是存储在Int32这个结构的某个成员字段中了?但Int32没有其他的字段了。
你的意思是否可以理解为c#对Int32做了特殊处理?是struct Int32这个结构的机制不同于其他的struct?
但是俺表示Int32只是一个类型而已,而且是个值类型,publicconstint MaxValue;publicconstint MinValue;表示的是Int32类型最大值和最小值吧。
装箱和拆箱和这个没有什么关系吧。