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

时间:2011-09-14 10:23:21

标签: c#

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

我搜索并找到了

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

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

但需要一些更简单的代码

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

2 个答案:

答案 0 :(得分:3)

默认情况下,对象在C#中没有固定的地址,你需要明确告诉垃圾收集器固定它。

有关详细说明,请参阅http://geekswithblogs.net/robp/archive/2008/08/13/speedy-c-part-3-understanding-memory-references-pinned-objects-and.aspx

答案 1 :(得分:1)

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

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