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

简介: 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();



679140-20160528222810959-311478423.png


---->序列化


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


--步骤---->


     ---在需要序列化的类前标记[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 = "阿辉" });  
}

679140-20160528222813069-598565262.png


2:反序列化

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

679140-20160528222814866-1810936564.png


---->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类型的,要不然胡出现下面的错误。


679140-20160528222817819-352651977.png


修改之后就好了。


679140-20160528222818897-93974377.png

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;
}



679140-20160528222820459-558711036.png

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


679140-20160528222821803-540527351.png




目录
相关文章
|
7月前
|
存储 C#
C#中的序列化和反序列化
C#中的序列化和反序列化
|
7月前
|
SQL 开发框架 .NET
C#进阶-LINQ实现对集合的增删改查
本篇演示了LINQ在日常开发中的常用操作,实现结果集的增删改查。目前LINQ支持两种语法,我会在每个案例前先用大家熟知的SQL语句表达,再在后面用C#的两种LINQ语法分别实现。LINQ语法第一次接触难免感到陌生,最好的学习方式就是在项目中多去使用,相信会有很多感悟。
95 0
|
7月前
|
存储 人工智能 C#
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
【Unity 3D】C#中数组、集合、栈、队列、哈希表、字典的讲解(附测试代码)
94 0
|
1月前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
3月前
|
存储 C# 索引
C# 一分钟浅谈:数组与集合类的基本操作
【9月更文挑战第1天】本文详细介绍了C#中数组和集合类的基本操作,包括创建、访问、遍历及常见问题的解决方法。数组适用于固定长度的数据存储,而集合类如`List<T>`则提供了动态扩展的能力。文章通过示例代码展示了如何处理索引越界、数组长度不可变及集合容量不足等问题,并提供了解决方案。掌握这些基础知识可使程序更加高效和清晰。
86 2
|
2月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
3月前
|
SQL 开发框架 安全
并发集合与任务并行库:C#中的高效编程实践
在现代软件开发中,多核处理器普及使多线程编程成为提升性能的关键。然而,传统同步模型在高并发下易引发死锁等问题。为此,.NET Framework引入了任务并行库(TPL)和并发集合,简化并发编程并增强代码可维护性。并发集合允许多线程安全访问,如`ConcurrentQueue&lt;T&gt;`和`ConcurrentDictionary&lt;TKey, TValue&gt;`,有效避免数据不一致。TPL则通过`Task`类实现异步操作,提高开发效率。正确使用这些工具可显著提升程序性能,但也需注意任务取消和异常处理等常见问题。
55 1
|
4月前
|
存储 C# 数据库
解决C#对Firebase数据序列化失败的难题
在游戏开发中,Unity结合Firebase实时数据库为开发者提供强大支持,但在C#中进行数据序列化和反序列化时常遇难题。文章剖析了数据丢失或反序列化失败的原因,并给出解决方案,包括使用`JsonUtility`、确保字段标记为`[Serializable]`以及正确配置网络请求。示例代码演示了如何在Unity环境中实现Firebase数据的序列化和反序列化,并通过设置代理IP、Cookies和User-Agent来增强网络请求的安全性。这些技巧有助于确保数据完整传输,提升开发效率。
解决C#对Firebase数据序列化失败的难题
|
4月前
|
存储 C# 索引
C# 集合语法全解
C# 集合语法全解
35 0
|
7月前
|
XML 存储 JSON
c#XML、JSON的序列化和反序列化,看完你就懂了
c#XML、JSON的序列化和反序列化,看完你就懂了
140 0