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

关于集合的练习。

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

              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();

时间: 2024-09-29 08:11:22

30天C#基础巩固-----序列化,集合的相关文章

【转载】100多个很有用的JavaScript函数以及基础写法大集合

1.document.write("");为 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转

序列化集合

package com.itcast.demo06.ObjectStream; import java.io.*;import java.util.ArrayList; /** * @author newcityman * @date 2019/7/28 - 23:15 * 练习:序列化集合 * 步骤: * 1.定义一个存储Person对象的ArrayList集合 * 2.往集合中存储person对象 * 3.创建一个序列化流ObjectOutputStream,对集合进行序列化 * 4.使用O

Java基础面试:集合、内部类、线程

package test; import java.util.Hashtable; import java.util.Map; public class test { public static String change(String param){ param=null; return param; } public static void main(String[] args) { String param1="p1"; param1=change(param1); Map ta

基础篇——序列化和文件的输入输出

一.对象序列化(存储) FileOutputStream fileStream = new FileOuputStream("file.ser"); ObjectOutputStream os = new ObjectOutputStream(fileStream); os.writeObject(one);//Help one = new Help(); os.writeObject(two); os.close(); 当对象被序列化时,被该对象引用的实例变量也会被序列化,且所有被引

Py西游攻关之基础数据类型(五)-集合

Py西游攻关之基础数据类型 - Yuan先生 https://www.cnblogs.com/yuanchenqi/articles/5782764.html 八 集合(set) 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 集合(set):把不同的元素组成一起形成集合,是python基本的数据类型. 集合元素(set elements):组成集合的成员(不可重复) li=[1,2,'a','b

30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集

一:泛型    关于泛型我自己也不是很好的理解,但是具体的运用还是可以的,可以这样的理解,我们定义一个数组,但是不知道将来它是保存什么类型的值,很是矛盾,这个时候泛型就出现了,它可以解决这个场景,list<T> 以前这里是类型,前提是我们知道这里将来保存什么值,现在不知道了使用T(Type)来表示,将来什么类型的值都可以保存在里面.这个在集合,项目底层一些公共的接口,类之中使用的特别多. 二:集合 线型集合----List<T> List<int> array = ne

C#基础[10] ArrayList集合(二)【详细介绍】

1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 2.如何使用ArrayList 最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i<10;i++ ) //给数组增加10个Int元素 List.Add(i); //..程序做一些处理 List.RemoveA

Java基础知识:集合

Java 集合 1. Collection Iterator接口: 2. List 有序的 Collection(也称为序列).此接口的用户可以对列表中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素. 正因为List是有序的,相对于Collection,其增加了以下几个方法: 添加: void add(int index, E element) //在列表的指定位置插入指定元素 void addAll(int index, Collec

python开发模块基础:序列化模块json,pickle,shelve

一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来.但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中.你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢?没错序列化的过程就是从dic 变成str(dic)的