在调试器中检查& x(C#)

时间:2009-10-29 12:29:08

标签: c# visual-studio debugging

在控制台程序中执行此操作:

object x = new string(new char[0]);

如果在x分配后设置断点并启动快速监视窗口,那么显示& x的调试器是什么?我期待x的地址,但看起来我错了?


编辑:我问这个是因为another thread,它指出如果有人这样做

object x = new string(new char[0]);
object y = new string(new char[0]);

x和y将引用同一个对象。由于我想查看它,我尝试使用& amp;检查调试器中的这些变量的地址。操作员,起初,我的印象是他们不同。但是,在扩展结果后,第二级值确实匹配 - 所以这些似乎是“真实地址”。

2 个答案:

答案 0 :(得分:2)

如果我显示x我得到“”,其类型报告为“object {string}” - 这就是我所期望的。

&x显示0x062fd7f0(在我的情况下),其类型报告为“object& *”。扩展为另一个指针,类型为“object&”。

在第一种情况下,调试器有足够的信息来计算出类型,并向您展示一些有用的东西。

在第二种情况下,所有调试器“知道”的是变量是一个对象,所以只能显示指针(我认为)。

<强>更新

您的更新有意义。 &x&y报告的值是变量的指针。它们保存的值是指向不可变字符串“”的指针。

答案 1 :(得分:0)

你不能这样做,因为内存管理由CLR处理