二进制流的使用很方便,为了更好的理解应用它,我创建简单对象开始测试它的增加特性和减少特性.
[Serializable] class Data----------开始时候的存储对象 { public string name = "namex"; public string ceshia = "aa"; public string ceshib = "bb"; } [Serializable] class Data----------在代码中修改存储类, 增加了新的字段 { public string name = "namex"; public string ceshia = "aa"; public string ceshib = "bb"; public string ceshic = "cc"; public int md = 21; public long ml = 2; } //读取后,新增加的值由于在原来存储文件中不存在,它们被赋予默认初始值,而非代码中指定的初始值. string ceshic = null; int md = 0; long ml = 0; //减少数据后, 不会影响原来的值.存储多余的值被自动忽略 [Serializable] class Data----------在代码中修改存储类, { public string name = "namex"; public string ceshia = "aa"; public string ceshib = "bb"; // public string ceshic = "cc"; // public int md = 21; // public long ml = 2; } //需要注意的点来了,新增加的变量名字不能原来存储过的变量名字相同,如果相同,系统不会因为变量类型不同,而判断是不同变量值,而会抛出异常,提醒你无法转化. [Serializable] class Data----------在代码中修改存储类, { public string name = "namex"; public string ceshia = "aa"; public string ceshib = "bb"; // public string ceshic = "cc"; // public int md = 21; // public long ml = 2; public string ml = 2;//新增加的变量名字和原先存储的数据变量名字相同 }
所以在多次增加或者删除字段时,尽量保持变量的名字都是不同的,这样增减字段都会保持与过去存储文件的兼容性!