Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在VS 2013调试器中确定引用相同值的变量_C#_Debugging_Visual Studio 2013_Pass By Reference_Watch - Fatal编程技术网

C# 在VS 2013调试器中确定引用相同值的变量

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

在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 = "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
-即显示所有步骤。。。