zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    华三SNMP配置详解
    华三交换机命令
    帧中继笔记
    分解企业园区网各模块所需的技术
    用 Python 写个坦克大战
    我给这个Python库打101分!
    用Python绘制一套“会跳舞”的动态图形给你看看
    Python异常处理
    python分析BOSS直聘的某个招聘岗位数据
    90行代码让微信地球转起来,太酷了!(python实现)
  • 原文地址:https://www.cnblogs.com/-liszt/p/3438343.html
Copyright © 2011-2022 走看看