sizeof 运算符用于仅能获得值类型的大小。
已知方法:
1.将引用类型的对象进行序列化后,获取序列字节长度。
2.引用类型可通过反射机制深度遍历每个一值类型字段。用Sizeof相加。
请问哪位专家能有更好的方法。十万火急!

解决方案 »

  1.   

    Marshal.SizeOf 方法请参见
    Marshal 类 | Marshal 成员 | System.Runtime.InteropServices 命名空间 | C++ 托管扩展编程 
    语言
    C#C++JScriptVisual Basic全部显示
    使用 Marshal 返回类的非托管大小(以字节为单位)。重载列表
    返回对象的非托管大小(以字节为单位)。受 .NET Framework 精简版的支持。[Visual Basic] Overloads Public Shared Function SizeOf(Object) As Integer
    [C#] public static int SizeOf(object);
    [C++] public: static int SizeOf(Object*);
    [JScript] public static function SizeOf(Object) : int;
    返回非托管类型的大小(以字节为单位)。受 .NET Framework 精简版的支持。[Visual Basic] Overloads Public Shared Function SizeOf(Type) As Integer
    [C#] public static int SizeOf(Type);
    [C++] public: static int SizeOf(Type*);
    [JScript] public static function SizeOf(Type) : int;
      

  2.   

    http://blog.dreambrook.com/jzli/archive/2005/07/01/1070.aspx在托管的方式下也可以获取对象的大小
      

  3.   

    Marshal.SizeOf仅仅是用于求非托管Interop之后的大小,不能得到真实托管对象的大小。实际上这个大小几乎没有什么用处,除非你在对CLR运行时进行深层次的开发
      

  4.   

    不明白楼主要这个大小干吗?
    值类型的sizeof也只是在为值类型的数据在堆上分配空间时用用。引用类型的东西一生都在托管堆上,要知道大小干吗?