• C# 序列化[Serializable]


    --首先来段网络上的例子,地址:http://www.cnblogs.com/firstyi/archive/2008/03/18/1111800.html

    实际工作中遇到的问题:

      需要将数据存储成单独的文件,这个单独的文件,需要在任何地方都可以用的到。比如说,存储一系列表格,其中有 double,string , bool等数据类型

    double数据类型在中国所用到的小数点是“.” ,而在瑞典用到的小数点是逗号“,”,如果将所有数据都保存为文本形式的话,不仅仅在写入的时候格式麻烦,而且

    在不同的国家还不通用。

    解决的方法思路:

      可以直接保存各个数据的数据类型。这就要求用到序列化和反序列化的知识。(这个例子很简单,只是自己第一次用到。写下来加深印象)

            [Serializable]
            class channeltable
            {
                public string Name;
                public double Frequency;
                public string Subchannel;
                public string powerTx;
                public bool wide_band;
                public bool subchannel_lock;
            }
    
            private void SerializeNow(string path,List<channeltable> channeltable)
            {
                FileStream fileStream = new FileStream(path, FileMode.CreateNew);
                BinaryFormatter b = new BinaryFormatter();
                b.Serialize(fileStream, channeltable);
                fileStream.Close();
            }
    
            private void DeSerializeNow(string path, ref List<channeltable> channeltable)
            {
                FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
                BinaryFormatter b = new BinaryFormatter();
                channeltable = b.Deserialize(fileStream) as List<channeltable>;
                fileStream.Close();
            }

    当用序列化的方法保存后,得到的文件,是连续的乱码。不能从保存的文件直接看出来,里面的具体数据。这样可以保证数据不被胡乱篡改。

    需要反序列化后,才能得到我们要的对象。

    例子中序列化的是一个channeltable 集合对象,反序列化后得到的同样是这样一个对象。避免了“,”和“.”的使用,所造成的转换SystemFormatException

  • 相关阅读:
    poj3067 Japan(树状数组)
    Codeforces 482C Game with Strings(dp+概率)
    LeetCode -- 推断链表中是否有环
    螺旋矩阵——正逆序
    POJ 3905 Perfect Election(2-sat)
    设计模式 之 桥接
    Codeforces Round #257 (Div. 2)
    [LeetCode][Java] Minimum Window Substring
    Unity特殊目录和脚本编译顺序
    jQuery插件 -- Cookie插件
  • 原文地址:https://www.cnblogs.com/-liszt/p/3438343.html
Copyright © 2020-2023  润新知