您的位置:首页 > 编程语言 > C#

c# 学习笔记 二进制序列化

2015-01-04 15:59 411 查看
要保存的类person

namespace serializer

{

    [Serializable] //必须要标记可序列化

    class person

    {

        public int num;

        public string name;

        public person(int num, string name)

        {

            this.num = num;

            this.name = name;

        }

    }

}

主窗体

namespace serializer

{

    public partial class Form1 : Form

    {

        Dictionary<string, person> listp;

        Dictionary<string, person> listfan;

        public Form1()

        {

            listp = new Dictionary<string, person>();

            listfan = new Dictionary<string, person>();

            InitializeComponent();

        }

        

        private void button1_Click(object sender, EventArgs e)

        {

            listp.Add("1", new person(130, "李四"));

            listp.Add("2", new person(131, "张三"));

            listp.Add("3", new person(132, "王五"));

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter = "*.bin|*.BIN|*.*|(*.*)";

            if (sfd.ShowDialog() == DialogResult.OK)

            {

                string name = sfd.FileName;

                ///////////////////////////////序列化过程

                IFormatter serializer = new BinaryFormatter();

                using (FileStream fs = new FileStream(name, FileMode.Create, FileAccess.Write))

                {

                    serializer.Serialize(fs, listp);

                }                                                                                     

            }

            

        }

        private void button2_Click(object sender, EventArgs e)

        {

            OpenFileDialog ofd = new OpenFileDialog();

            if (ofd.ShowDialog() == DialogResult.OK)

            {

                string name = ofd.FileName;

                ///////////////////////////////////反序列化过程

                IFormatter serializer = new BinaryFormatter();

                using (FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read))

                {

                    listfan = serializer.Deserialize(fs) as Dictionary<string, person>;

                }

            }

            MessageBox.Show("1"+"   number:"+listfan["1"].num.ToString()+"name:"+listfan["1"].name+"\n"+"2"+"   number:"+listfan["2"].num.ToString()+"name:"+listfan["2"].name+"\n"+"3"+"   number:"+listfan["3"].num.ToString()+"name:"+listfan["3"].name);

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: