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

30天C#基础巩固-----序列化,集合的更多相关文章
- 100多个很有用的JavaScript函数以及基础写法大集合
100多个很有用的JavaScript函数以及基础写法大集合 1.document.write("");为 输出语句2.JS中的注释为//3.传统的HTML文档顺序是:docume ...
- C#基础课程之五集合(HashTable,Dictionary)
HashTable例子: #region HashTable #region Add Hashtable hashTable = new Hashtable(); Hashtable hashTabl ...
- 使用JavaScriptSerializer序列化集合、字典、数组、DataTable为JSON字符串 分类: 前端 数据格式 JSON 2014-10-30 14:08 169人阅读 评论(0) 收藏
一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...
- C#基础课程之四集合(ArrayList、List<泛型>)
list泛型的使用 ArrayList list = new ArrayList(); ArrayList list = ); //可变数组 list.Add("我"); //Ad ...
- SQL基础--查询之四--集合查询
SQL基础--查询之四--集合查询
- WPF 绑定以基础数据类型为集合的无字段名的数据源
WPF 绑定以基础数据类型为集合的无字段名的数据源 运行环境:Window7 64bit,.NetFramework4.61,C# 6.0: 编者:乌龙哈里 2017-02-21 我们在控件的数据绑定 ...
- 『Python基础-11』集合 (set)
# 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...
- Python基础数据类型之集合
Python基础数据类型之集合 集合(set)是Python基本数据类型之一,它具有天生的去重能力,即集合中的元素不能重复.集合也是无序的,且集合中的元素必须是不可变类型. 一.如何创建一个集合 #1 ...
- 小白学 Python(15):基础数据结构(集合)(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
随机推荐
- Java IO2:RandomAccessFile
RandomAccessFile RandomAccessFile类可以说是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法.RandomAccessFile类支持"随机访 ...
- 第三次作业:PSP耗时
PSP个人项目耗时对比记录表:四则运算 Personal Software Process Stages Time(%) Planning 7 Estimate 9 开发 76 •需求分析 ...
- HOOK技术的一些简单总结
好久没写博客了, 一个月一篇还是要尽量保证,今天谈下Hook技术. 在Window平台上开发任何稍微底层一点的东西,基本上都是Hook满天飞, 普通应用程序如此,安全软件更是如此, 这里简单记录一些常 ...
- [ACM_几何] Fishnet
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28417#problem/C 本题大意:有一个1X1的矩形,每边按照从小到大的顺序给n ...
- Sqlserver 如何获取每组中的第一条记录
在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组中的一条数据. 例子 我们要从上面获得的有效 ...
- IT传统组织结构及新型扁平化组织
如今互联网企业正凶猛的改变人们衣食住行的方方面面,衣->淘宝,蘑菇街;食->大众点评,口碑;住->去哪,途牛:行->12306, 多次听到互联网的同行介绍他们就是要“快”,快速 ...
- JS基础知识总结
js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划() ...
- Visual Studio 2012系统环境变量设置(命令行)
方法1.运行脚本vsvars32.bat:D:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat ...
- Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本
Atititi 版本管理 rc final rtm ga release 软件的生命周期中一般分4个版本 RC=Release Candidate,含义是"发布候选版",它不是最终 ...
- fir.im Weekly - 600个 Android 开源项目汇总
本期 Weekly 收集了一些热度资源,包含 Android.iOS 开发工具与源码分享,程序员也应该了解的产品运营.设计等 Tips ,希望对你有帮助. 600个Android开源项目汇总 勤劳的 ...