.NET中的对象引用有多大?

aro*_*eer 68 .net c# reference

.NET中对象引用的大小是多少?它是否在x86,x64和/或AnyCPU编译之间有所不同?

如果它有所作为,我个人对C#感兴趣.

Sam*_*eff 72

引用本身基本上是一个指针.32位OS上为32位,64位OS上为64位.

引用的对象的大小更复杂.

  • @ supercat,.NET开发人员可以选择将他们的应用程序编译为32位模式,所有指针都是32位.这对于任何不需要64位指针的应用程序来说可能是最好的,这是绝大多数应用程序. (4认同)
  • @supercat,有很多关于 32 位与 64 位性能的相互矛盾的帖子。这是一个强烈支持 32 位的。http://blogs.msdn.com/b/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx (2认同)
  • @SamuelNeff:虽然最初的问题可以回答“x86 上的 4 个字节;x64 上的 8 个字节”,但这个问题本身并不是很有趣或有见地。了解 8 字节对象引用对性能的影响似乎更有见地。 (2认同)
  • @ChrisBordeman 是什么让你这么想?OP 说的是“对象引用”而不是“对象”。OP 将此答案标记为正确。 (2认同)

Ill*_*ack 19

要确定指针大小,您可以使用System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr))sizeof(IntPtr)在不安全的上下文中.

编辑:

或者IntPtr.Size.


Igo*_*aka 14

对象引用基本上是指向包含对象属性的内存的指针.因此,引用的长度为一个处理器字 - 32位平台上为32位,x64上为64位.