2011-09-14 80 views
3

如何獲取c#中的對象的地址?如何獲取C#中對象的地址#

我搜查,發現

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

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

但需要一些更簡單的代碼

&運營商可以在這裏使用?

+7

我知道我會後悔問,但爲什麼你需要一個C#對象的地址? –

+1

真正的問題是您打算如何處理C#中的對象地址? –

+0

在.NET中獲取任意對象的地址是不可能的,但如果更改源代碼並使用mono,則可以完成此操作。請參閱此處的說明:http://stackoverflow.com/questions/25410158/get-memory-address-of-net-object-c/25432952#25432952 – evolvedmicrobe

回答

1

不安全的代碼。 編譯/不安全(在VS項目屬性複選框)

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

這會產生如下錯誤:無法取得地址,取得大小,或者聲明一個指向託管類型的指針('object') – Peteter

+0

@Peteter只能用於結構體。請參閱http://msdn.microsoft.com/en-us/library/75dwhxf7.aspx – Olivier