我应该在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