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):变 ...
随机推荐
- android知识杂记(二)
记录项目中的android零碎知识点,用以备忘. AsyncQueryHandler 继承与handler,可以用于处理增删改(ContentProvider提供的数据) 例如:query = new ...
- dojo/dom-style样式操作学习笔记
基础总结 一个元素的样式信息由三个来源根据层叠规则确定.三个来源分别是: 由DOM元素style特性设置的内联样式 由style元素中嵌入的样式规则 由link元素引入的外部样式表 元素的样式 任何支 ...
- 生成PDF的新选择-Phantomjs
最近在node.js项目开发中,遇见生成PDF的需求,当然生成PDF不是一个新意的需求:我可以选择利用开源的pdfkit或者其他node pdf模块,或者通过edge.js调用.net/python下 ...
- js模版引擎handlebars.js实用教程——with-终极this应用
返回目录 <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content=" ...
- CSS3 动画一瞥
伴随HTML5而来的CSS3让前端大湿们可以用简单的CSS样式即可写出动画效果来,而在这之前,一提到动画我们可能会想到JavaScript,Flash,Java插件等.如果是用JavaScript那倒 ...
- Linux下安装Apache并以mod_wsgi方式部署django站点
源码编译方式安装Apache 首先下载Apache源码压缩包,地址为http://mirror.bit.edu.cn/apache/httpd/ 继续下载apr和apr-util压缩包,地址为http ...
- jQuery自动加载更多程序
1.1.1 摘要 现在,我们经常使用的微博.微信或其他应用都有异步加载功能,简而言之,就是我们在刷微博或微信时,移动到界面的顶端或低端后程序通过异步的方式进行加载数据,这种方式加快了数据的加载速度,由 ...
- webservice3
什么是bottom up 什么是top down 通过浏览器访问如 http://localhost:8080/HelloWS/services/HelloWSsss?wsdl 获取的 wsdl, ...
- lua如何构造类
function class(super, autoConstructSuper) local classType = {}; classType.autoConstructSuper = autoC ...
- salesforce 零基础学习(三十二)通过Streams和DOM方式读写XML
有的时候我们需要对XML进行读写操作,常用的XML操作主要有Streams和DOM方式. 一.Streams方式 Streams常用到的类主要有两个XmlStreamReader 以及XmlStrea ...