如何在C#中获取对象的地址

4

如何在c#中获取对象的地址?

我进行了搜索,找到了以下方法:

GCHandle handle = GCHandle.Alloc(obj, GCHandleType.WeakTrackResurrection);

int address = GCHandle.ToIntPtr(handle).ToInt32();

但需要一些更简单的代码

这里可以使用 & 运算符吗?


7
我知道我会后悔问这个问题,但是为什么你需要一个 C# 对象的地址? - Mitch Wheat
1
真正的问题是你在C#中打算用对象地址做什么? - Roee Gavirel
在.NET中获取任意对象的地址是不可能的,但如果您更改源代码并使用mono,则可以完成。请参阅此处的说明:https://dev59.com/fl8e5IYBdhLWcg3wwMhW#25432952 - evolvedmicrobe
2个回答

4

1

不安全的代码。 使用 /unsafe 编译(在 VS 项目属性中的复选框)

unsafe
{
    fixed(MyobjType* objptr = &myobj)
    {
      // do sthng
    }
}

1
这会生成错误,如:无法获取托管类型('object')的地址、大小或声明指向其的指针。 - Peteter
@Peteter 只适用于结构体。请参见 http://msdn.microsoft.com/en-us/library/75dwhxf7.aspx - Olivier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接