gpt4 book ai didi

c# - 显示对象引用的值

转载 作者:行者123 更新时间:2023-11-30 19:00:22 27 4
gpt4 key购买 nike

在 C++ 中,显示指向对象的指针的实际值相当简单。例如:

void* p = new CSomething();
cout << p;

有没有办法在 .NET 中做这样的事情?

这样做的值(value)将/只能是教育性的,例如出于演示的目的,例如为学生展示一个值,而不是仅仅比较引用相等性或 null(无)以证明浅拷贝、不变性等。

最佳答案

您可以使用 GCHandle 获取固定对象的地址。 GC 可以四处移动对象,因此要获取的唯一合理地址是固定对象之一。

GCHandle handle = GCHandle.Alloc(obj, GCHandleType.Pinned);
Console.WriteLine(handle.AddrOfPinnedObject().ToInt32());
handle.Free();

请记住,GCHandle 只会固定原始或 blittable 类型的对象。有些对象是 blittable 的(你可以为演示目的设置它,这样它就可以工作)但是任何引用类型都不是 blittable 的。

您需要使用 [StructLayout(LayoutKind.Sequential)] 添加明确的 blittable 描述,或使用调试器直接检查不符合这些条件的对象地址。

关于c# - 显示对象引用的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3355801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com