请教.net方面的两个问题
最近读了《CLR VIA C#》,有两个问题不太明白,查了网络仍不理解,所以向大伙请教一下。
问题1:
C# code
static void Main(string[] args)
{
object o;
int i = 2;
o = i;
Console.WriteLine(o.GetType().ToString());
}
上面是一个封箱操作,这时应该是在堆中创建一个对象(Object),然后把i的内容复制进去。
这时 o指向的应该是一个Object呀,为何输出结果确是 System.Int32
问题2:
按照书中说明,值类型是没有 “对象类型指针”及“同步块索引”这两个成员的。
那么 Struct(也是值类型),中的 方法,是存放在哪里的?
谢谢!
------解决方案--------------------我的理解不知道对不对 期待跟多大牛的解释
1.object o;创建一个object的引用没有指向任何值
2.int i = 2;在栈内存中分配一个值引用的内存空间 并赋值为2
3.o = i;将o指向i的内存空间因为o是一个引用 所以现在实际上对o的操作和对i的操作没有任何区别
所以 Console.WriteLine(o.GetType().ToString());结果就是int的喽
也不知道对不对
------解决方案--------------------说白了,就是父类引用指向子类对象。调用GetType的时候获取的是所指向对象的类型。
------解决方案--------------------