C# 引用类型疑问 objectc# 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 object obj = i; //这里发生了装箱,在托管堆上生成一个引用对象,其内保存有i的值,也就是11.obj和i的关系到此为止。至于其后更改的i的值,与托管堆上的obj对象毫无关系。 那么说C# object类型不是指针变量类型? object是一个类似于根类型,据我所知,所有的类型都可以转换成object,但它不是指针类型,所以你的做法就错在这点。你可以试一下object a = 1;Console.WriteLine(a);Console.WriteLine(a.GetType());然后你会发现得到是int,但如果你直接拿它当int使用却是错的int b = a ;//错误这时你必须得指明int b = (int)a;明白了吧? 对于CLR和C#来说,只有两种类型,值类型和引用类型。别用你自己发明的名词“指针变量类型”来做交流,没人明白你在说什么 int i = 11; var obj = &i; i = 555; Console.WriteLine(*obj); 对于CLR和C#来说,只有两种类型,值类型和引用类型。别用你自己发明的名词“指针变量类型”来做交流,没人明白你在说什么 嗯 我就是觉得C#引用类型有点像C的指针变量类型 没别的意思 可能说的不清楚 这也是为什么有一个MakeByRefType的方法的原因。它的作用就是产生一个这样的代理对象http://msdn.microsoft.com/zh-cn/library/system.type.makebyreftype(v=vs.110).aspx 现在终于明白了 int i=11; //在内存的线程堆栈上开辟一个空间 存放的是11object obj=i; //在内存的托管堆上开辟空间 存放的是11 在内存的线程堆栈上开辟空间 存放的是指向堆的地址 i=555; //将线程堆栈上的i换为555 而此时obj所指向的堆中的内容仍然是11 所以obj最终的结果是11谢谢大家的回答 C# 桌面程序中 多列下拉列表怎么实现的? C#.net 什么是数据适配器 把数据库相关数据导出到Excel模板中去 求关于类似于qq、淘宝旺旺之类的即时通信程序源码或者设计思路(第一次发200分的贴子,散分)。 请教连接问题. c#与文件关联 请教一个简单的问题,c# 有没有一个方法,把一个字符串里面的内容,以相反的顺序输出? 求郑州的朋友帮忙!顶者也有分的! 程序发布后样式在谷歌浏览器中浏览正常,在IE中错乱 access select top 参数化问题。希望能得到指点 C/S 服务方面 疑问 请解惑 谢谢 一些简单的问题
object a = 1;
Console.WriteLine(a);
Console.WriteLine(a.GetType());然后你会发现得到是int,但如果你直接拿它当int使用却是错的
int b = a ;//错误
这时你必须得指明int b = (int)a;
明白了吧?
int i = 11;
var obj = &i;
i = 555;
Console.WriteLine(*obj);
它的作用就是产生一个这样的代理对象http://msdn.microsoft.com/zh-cn/library/system.type.makebyreftype(v=vs.110).aspx
int i=11; //在内存的线程堆栈上开辟一个空间 存放的是11
object obj=i; //在内存的托管堆上开辟空间 存放的是11 在内存的线程堆栈上开辟空间 存放的是指向堆的地址
i=555; //将线程堆栈上的i换为555 而此时obj所指向的堆中的内容仍然是11
所以obj最终的结果是11谢谢大家的回答