码迷,mamicode.com
首页 > Windows程序 > 详细

30天C#基础巩固-----序列化,集合

时间:2016-05-28 23:20:08      阅读:442      评论:0      收藏:0      [点我收藏+]

标签:

关于集合的练习。

----->计算字符串每个字符出现的次数。

              Console.WriteLine("请输入?");
            string input = Console.ReadLine();
            Dictionary<char,int> dic=new Dictionary<char, int>();
            for (int i = 0; i <input.Length; i++)       //遍历输入字符,此时它为char类型。
            {
                if (dic.ContainsKey(input[i]))              //看集合中是否有key,有则使其value++,没有则Add()进去
                {
                    dic[input[i]]++; 
                }
                else
                {
                    dic.Add(input[i], 1);   
                }                
            }
            //循环输出
            foreach (KeyValuePair<char, int> item in dic)
            {
                Console.WriteLine("{0}出现的次数是:{1}",item.Key,item.Value);
            }
            Console.ReadKey();

 

技术分享

---->序列化

   序列化就是格式化,是指将一个对象以某种格式进行呈现的样子。

--步骤---->

      ---在需要序列化的类前标记[Serializable]

      ---创建序列化的对象BinaryFormatter

      ---创建流

      ---调用Serialize方法。(Serialize():将对象或具有指定顶级(根)的对象图形序列化为给定流。)

---->二进制序列化

           [Serializable]    //需要序列化的标记
            class Address
            {
              public string Name { get; set; }
              public int Age { get; set; }
            }
            //BinaryFormatter:以二进制格式将对象或整个连接对象图形序列化和反序列化。
              BinaryFormatter bf=new BinaryFormatter();        
            using (FileStream fs=new FileStream("data",FileMode.Create,FileAccess.Write))
            {
                //将对象或具有指定顶级(根)的对象图形序列化为给定流。
                bf.Serialize(fs, new Address() { Age = 120, Name = "阿辉" });  
            }

技术分享

2:反序列化

            //BinaryFormatter:以二进制格式将对象或整个连接对象图形序列化和反序列化。
              BinaryFormatter bf = new BinaryFormatter();
            using (FileStream fs = new FileStream("data", FileMode.Open, FileAccess.Read))
            {
                //Deserialize()+将指定的流反序列化为对象图形。
                Address a = bf.Deserialize(fs) as Address;
            }

技术分享

---->XML序列化

            //XmlSerializer+将对象序列化到 XML 文档中和从 XML 文档中反序列化对象。
            XmlSerializer xf=new XmlSerializer(typeof(Address));    //拱顶
            using (FileStream fs = new FileStream("data.xml", FileMode.Create, FileAccess.Write))
            {
               //Serialize()+使用指定的 System.IO.Stream 序列化指定的 System.Object 并将 XML 文档写入文件
                xf.Serialize(fs,new Address(){Name="ahui",Age=12});                
            }

这里我们的类Address需要设置为public类型的,要不然胡出现下面的错误。

技术分享

修改之后就好了。

技术分享

2:反XML序列化

            XmlSerializer xf=new XmlSerializer(typeof(Address));
            using (FileStream fs=new FileStream("data.xml",FileMode.Open,FileAccess.Read))
            {
                Address address= xf.Deserialize(fs) as Address;
            }

技术分享

---->Javascript序列化(JSON格式数据)

            //添加一个引用,Web.Extension,这里不需要流来进行操作。
            JavaScriptSerializer jf=new JavaScriptSerializer();       
            Address a=new Address(){Age=11,Name="ahui"};
            //将对象转换为 JSON 字符串。返回的是string类型的。
            string ser = jf.Serialize(a);       
            Console.WriteLine(ser);
            Console.ReadKey();

技术分享

30天C#基础巩固-----序列化,集合

标签:

原文地址:http://www.cnblogs.com/netxiaohui/p/5538499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!