如何获取一个Class在GC在的空间大小

来源:互联网 发布:贰贰网络 怎样 编辑:程序博客网 时间:2024/05/17 23:09

  private int GetSize(Type t)
        {
            int result = 0;
            if (!t.IsClass)
            {
                result = Marshal.SizeOf(t);
            }
            else
            {
                FieldInfo[] fs = t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
                foreach (FieldInfo f in fs)
                {
                    Type tp = f.FieldType;
                    result += this.GetSize(tp);
                }
                result += 8;
            }
            return result;
        }

原创粉丝点击