我應該在C#中做一個項目來展示列表如何工作。我可以在C#中獲取變量或對象的物理地址嗎?
我想這是在這樣的圖形界面來顯示一個好主意:
-in「值」字段:節點的值
-in「下一步」字段:下一個節點
這可能嗎?
我應該在C#中做一個項目來展示列表如何工作。我可以在C#中獲取變量或對象的物理地址嗎?
我想這是在這樣的圖形界面來顯示一個好主意:
-in「值」字段:節點的值
-in「下一步」字段:下一個節點
這可能嗎?
是的,不安全的代碼(至少虛擬地址,而不是原始的物理內存地址,但這正是你想要的)。
有關詳細信息,請參閱MSDN: How to: Obtain the Address of a Variable (C# Programming Guide)。它會指導您編譯以下示例(它需要在項目屬性或/unsafe
開關中啓用不安全的代碼)以及獲取可移動變量位置時可能遇到的陷阱,這些陷阱需要關鍵字fixed
停留在相同位置,基本上說。
int number;
int* p = &number; //address-of operator &
C#或C++或C? – 2014-12-19 09:06:35
這個問題是關於C#的,所以我的答案也是這樣)的確,不安全的C#代碼看起來很像C/C++。 – 2014-12-19 09:07:02
@PranitKothari,運行鏈接,你會得到你的答案... – 2014-12-19 09:07:20
如果您的目的是演示如何使用內存,那麼您的'List'實現也可以包含*高級*內存管理。 – Sinatr 2014-12-19 09:07:19
除非變量是'fixed',否則不能保證它不會改變位置.http://msdn.microsoft.com/en-gb/library/f58wzh21%28v=vs.80%29.aspx – Jodrell 2014-12-19 09:08:21
值得注意的是通常可以在垃圾回收期間移動託管變量,因爲垃圾回收器可以(也將)對內存進行碎片整理 – 2014-12-19 09:10:23