C# 在VS 2013调试器中确定引用相同值的变量
在Visual Studio 2013调试器中单步执行时,是否有方法找出当前关注的变量当前引用的其他变量/字段 在下面的一个经典示例中,是否可以在最后一行确定f2.bar实际上引用了f1.bar?或者,是否有一种快速方法列出当前指向该值的所有引用变量C# 在VS 2013调试器中确定引用相同值的变量,c#,debugging,visual-studio-2013,pass-by-reference,watch,C#,Debugging,Visual Studio 2013,Pass By Reference,Watch,在Visual Studio 2013调试器中单步执行时,是否有方法找出当前关注的变量当前引用的其他变量/字段 在下面的一个经典示例中,是否可以在最后一行确定f2.bar实际上引用了f1.bar?或者,是否有一种快速方法列出当前指向该值的所有引用变量 public class Foo { public string bar; } var f1 = new Foo(); var f2 = f1; f2.bar = "mine"; f1.bar = "thi
public class Foo
{
public string bar;
}
var f1 = new Foo();
var f2 = f1;
f2.bar = "mine";
f1.bar = "this";
Console.WriteLine(f2.bar);
f1.bar = "mine";
f2.bar = "this";
Console.WriteLine(f1.bar);
结果:
> this
> this
如果我理解正确,您可以使用该功能 您所要做的就是在调试过程中的某个时候为
f1
提供对象Id。稍后您可以检查f2
——如果f2
指向相同的f1
,调试器将向您显示使用f1
创建的对象id,否则不会
换句话说,“生成对象ID”将告诉您是否正在查看相同的引用。我猜您的意思是
f2
是否仍指向f1
非f2。bar
指向f1.bar
。对吗?我知道对象id,谢谢,但整个技巧是能够在当前断点处回溯到变量的原点。回溯到当前观察到的变量的原点是什么意思?@Damian我认为在VS(“其他什么是指给定对象”)和“生成对象id”中不可能找到您想要的可能是您所能做的最好的(即,在您的情况下,“f1”和“f2”都将具有相同id的对象)。如果您有无法通过这种方式(或通过代码审查/测试)找到的问题,您可以使用始终选择WinDbg路线!gcroot
-即显示所有步骤。。。