程序描述: 我需要序列化一批对象,为什么序列化后的对象比实际上在内存中的对象占的字节要大,如果我要保持序列化后的对象所占的字节数和对象在内存中所占的字节数一样的化(未序列化之前),我需要怎么调整序列化?
/// 要序列化的类: [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
/// 要序列化的类: [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
你这问题比修真界的还生猛。你序列化之前就是个变量....整形占4字节吧(INT32)。你序列化之后的叫做XML格式的字符串字符型是1个字节吧,一个汉字是两个字符,即2字节你在内存当中的整形变量只占用4个字节,那么序列化后就是字符串对象,XML表示一个你这样的元素是这种形式,
<MyObject>
<N1>1</N1>
</MyObject>你查查是几字节目测超过20个
你对这个序列化的概念理解不够全面啊,所谓的序列化土鳖一点来说就是加了格式的数据文件(对象),跟在内存中描述对象是不一样的,序列化出来的东西是有格式的,一种固定的格式,也就是类似XML规定的文本格式,肯定要比内存对象大的多,无论你用什么方式序列化都是一样大的,就像楼上提过的,序列化后的对象要描述对象的视图关系和数据结构序列化的方式只是为了实现不同的需要而设立的,参考下别人的解答给你介绍本书读读,《数据结构》 严蔚敏 清华大学出版社 《新编微机原理及接口技术》 天津大学出版社