假设您正在调试。有一次你在方法A中,它有一个类型为Foo
的参数foo。稍后您将进入方法B,它还采用Foo
类型的参数foo。
这两个变量可能是相同的Foo
实例,但您如何判断?由于它们的范围不同,因此您无法调用ReferenceEquals()
。有没有什么方法可以获得变量指向的实际内存位置,以便您可以判断它们是否是实例?
答案 0 :(得分:6)
我相信您可以使用Make Object ID
功能。有关这方面的更多信息可以在here找到,但总结一下:
在“标记”对象后,您将在第二次调用Foo时看到分配的ID。
答案 1 :(得分:1)
在调试器中,您可以将第一个方法中对象的引用存储到静态字段,然后将第二个方法中的变量与静态字段进行比较。
答案 2 :(得分:0)
你可以得到一个指向变量的指针,但这需要在一个不安全的块中运行。
一旦你“无人”,你可以像这样声明指向你的Foo的指针:
Foo* p = &myFoo;
这已经在SO中讨论过:
答案 3 :(得分:0)
作为Mark Cidade建议的一个发展,当在第一个方法内部时,将以下内容输入到即时窗口中:
var whatever = foo;
然后,在第二种方法中,键入以下内容:
bool test = object.ReferenceEquals(whatever, foo);
即时窗口将显示测试结果。
然而,CodeNaked的建议更好。