程序描述: 我需要序列化一批对象,为什么序列化后的对象比实际上在内存中的对象占的字节要大,如果我要保持序列化后的对象所占的字节数和对象在内存中所占的字节数一样的化(未序列化之前),我需要怎么调整序列化? 
 ///  要序列化的类:     [Serializable] 
        public class MyObject
        {
            public int N1{get;set;} 
        }
        //序列化50组类,一次递增(第一次,序列化一个,第二次两个,依次递增)
        for (int j = 1; j <= 50; j++)
            {
                List<MyObject> list1 = new List<MyObject>();
                for (int i = 0; i < j; i++)
                {
                    MyObject obj1 = new MyObject();
                    obj1.N1 = 1;
                    list1.Add(obj1);
                }
                 //二进制序列化并返回序列化后字节流的长度
                int length = SerializeObject(list1, "e:\\SerialTest\\File.bin");
               
            }
下面是,对象序列化后,所占字节大小的分析
序列化后对象数组次序   总字节数   本次对象所占字节数
1      442 
2      460         18
3      477         17

4      494         17
5      514         20
6      532         18
7      549         17 
8      566         17
  

解决方案 »

  1.   

    http://www.cnblogs.com/ejiyuan/archive/2009/01/21/1379256.html
      

  2.   


    你这问题比修真界的还生猛。你序列化之前就是个变量....整形占4字节吧(INT32)。你序列化之后的叫做XML格式的字符串字符型是1个字节吧,一个汉字是两个字符,即2字节你在内存当中的整形变量只占用4个字节,那么序列化后就是字符串对象,XML表示一个你这样的元素是这种形式,
    <MyObject>
    <N1>1</N1>
    </MyObject>你查查是几字节目测超过20个
      

  3.   

    ,看到说明我说的是二进制序列化吗?,我没用xml的,那个我知道会大,问题是如果我想实现一种和内存字节一样的算法,应该怎么做?
      

  4.   

    如果对 .Net 自带的序列化不满意。。可以自行定义序列化的方法。
      

  5.   


    你对这个序列化的概念理解不够全面啊,所谓的序列化土鳖一点来说就是加了格式的数据文件(对象),跟在内存中描述对象是不一样的,序列化出来的东西是有格式的,一种固定的格式,也就是类似XML规定的文本格式,肯定要比内存对象大的多,无论你用什么方式序列化都是一样大的,就像楼上提过的,序列化后的对象要描述对象的视图关系和数据结构序列化的方式只是为了实现不同的需要而设立的,参考下别人的解答给你介绍本书读读,《数据结构》 严蔚敏 清华大学出版社  《新编微机原理及接口技术》 天津大学出版社