c# - 在调试器中唯一标识引用类型

标签 c# visual-studio debugging reference-type

我有 C++ 背景,如果这是非 C# 思维方式,我深表歉意,但我只需要知道。 :)

在 C++ 中,如果我有两个指针,并且我想知道它们是否指向同一事物,我可以查看内存/监 window 口并查看它们的值 - 查看它们是否指向相同的内存空间。

在 C# 中,我一直没能找到类似的东西。一种具有完全相同值的引用类型实际上可能是完全相同的对象,也可能是截然不同的东西。

有没有办法让我在 C# 中查看此类信息?也许某种等同于监 window 口的 & 运算符之类的东西?

最佳答案

您正在寻找的是对象 ID。对于调试器中的任何引用类型,您可以右键单击并说“制作对象 ID”。每当该实例显示在调试器中时,这将向值列添加 # 后缀。您还可以将 #1、#2 等添加到监 window 口,以便稍后再次查看它们。

第 0 步 - 运行此代码

static void Main(string[] args)
{
    var x = "a string";
    var y = x;
    System.Diagnostics.Debugger.Break();
}

第 1 步 - 右键单击​​并选择“制作对象 ID”

alt text

第 2 步 - 实例现在以 1# 后缀显示。注意:我在这一步没有做任何特别的事情。单击“生成对象 ID”后,两行 立即更新为显示 1# 后缀,因为它们指的是同一实例。

alt text

第 3 步 - 通过在监 window 口中添加 1# 随时查看它们

alt text

关于c# - 在调试器中唯一标识引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4251450/

相关文章:

c# - C# 中路径、多边形、面积和线的可继承 Java 类等效项

c++ - GLuint 未被识别

c - 如何使用 Visual Studio 2008 重新初始化静态 C 库中的所有全局变量?

c# - 符号已创建,但调试永远不会在断点处停止

javascript - 调试 react 。确定更改了哪个 Prop

c# - 在一行中使用制表符分隔符将数组写入文本文件

c# - Xamarin.Forms:如何从 Web API 数据填充饼图?

c# - Global 和 IProcessHostPreloadClient 中的 Application_Start

c++ - 每次更改代码后都无法解析外部符号

javascript - 使用:contain in list