赞
踩
本文是C#初学者简单教程,这是第23篇。感谢观看,记得关注我,后续还有更多教程文章,谢谢。
本文环境为Visual Studio 2019。
每当必须将与对象有关的数据从一个应用程序发送到另一个应用程序时,就会使用序列化和反序列化。序列化用于将应用程序数据导出到文件中。然后,目标应用程序使用反序列化从应用程序中提取数据以供进一步使用。
序列化是将C#类对象写入或序列化到文件的概念。假设您有一个名为“家庭”的C#类。该类具有“名称”和“人数”2个属性。
序列化可用于直接将“家庭”类的数据属性写入文件。反序列化用于从文件读取数据并再次构造还原出“家庭”对象。
让我们看一个如何实现此目标的示例。
在我们的示例中,我们将在代码中执行以下步骤:
在控制台应用程序的program.cs文件中输入以下代码。
代码说明:
代码说明:
这么做是为了验证一下,我们的序列化操作是否成功。
代码说明:
编写上面的代码,并使用Visual Studio运行该项目时,您将获得以下输出。
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Runtime.Serialization;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace ConsoleApp6
- {
- class Program
- {
- static void Main(string[] args)
- {
- 家庭 family = new 家庭();
- family.名称 = "我的五口之家";
- family.人口 = 5;
-
- IFormatter formatter = new BinaryFormatter();
- Stream stream = new FileStream(@"D:\家庭.txt", FileMode.Create, FileAccess.Write);
-
- formatter.Serialize(stream, family);
- stream.Close();
-
- Stream stream2 = new FileStream(@"D:\家庭.txt", FileMode.Open, FileAccess.Read);
- 家庭 obj = (家庭)formatter.Deserialize(stream2);
- Console.WriteLine(obj.名称);
- Console.WriteLine(obj.人口);
- }
-
-
- }
-
- [Serializable]
- public class 家庭
- {
- public string 名称 { get; set; }
- public int 人口 { get; set; }
- }
- }
通常,我们编程,将会使用第3方的Newtonsoft,您可以在Nuget中搜索,如下图:
这是由于Newtonsoft具有比C#类库提供的序列化更高的性能以及更好的使用性。
祝您用餐愉快。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。