在控制台程序中执行此操作:
object x = new string(new char[0]);
如果在x分配后设置断点并启动快速监视窗口,那么显示& x的调试器是什么?我期待x的地址,但看起来我错了?
object x = new string(new char[0]);
object y = new string(new char[0]);
x和y将引用同一个对象。由于我想查看它,我尝试使用& amp;检查调试器中的这些变量的地址。操作员,起初,我的印象是他们不同。但是,在扩展结果后,第二级值确实匹配 - 所以这些似乎是“真实地址”。
答案 0 :(得分:2)
如果我显示x
我得到“”,其类型报告为“object {string}” - 这就是我所期望的。
&x
显示0x062fd7f0
(在我的情况下),其类型报告为“object& *”。扩展为另一个指针,类型为“object&”。
在第一种情况下,调试器有足够的信息来计算出类型,并向您展示一些有用的东西。
在第二种情况下,所有调试器“知道”的是变量是一个对象,所以只能显示指针(我认为)。
<强>更新强>
您的更新有意义。 &x
和&y
报告的值是变量的指针。它们保存的值是指向不可变字符串“”的指针。
答案 1 :(得分:0)
你不能这样做,因为内存管理由CLR处理