目录
C# 序列化对象的步骤
C# 序列化的工作原理
1.二进制序列化
2. SOAP 序列化
3. XML 序列化
4.自定义序列化
示例

C# 序列化

Sep 03, 2024 pm 03:30 PM
c# c# tutorial

以下文章提供了 C# 序列化的概述。将对象实例转换为数据流的过程称为序列化,并且对象实例的状态转换为数据流,因为它可以跨不同网络传输并持久保存在存储位置中。这就是序列化的优点,可以将转换后的数据流以跨平台兼容的格式跨不同网络传输,并将转换后的流数据以持久或非持久对象状态保存到存储介质中,以便可以在不同的网络上传输相同的副本。后来创建的。

C# 序列化对象的步骤

以下是C#序列化对象的步骤:

  • 创建了一个流对象。
  • 创建了一个 BinaryFormatter 对象。
  • 调用 Serialize( ) 方法。

C# 序列化的工作原理

  • 每当我们使用应用程序时,都需要将数据存储在持久或非持久的介质中,以便以后可以检索相同的数据。这可以通过使用序列化的概念来实现。
  • 将对象的实例转换为字节流,将对象的状态移动到文件的内存或数据库中的过程称为序列化。
  • 序列化对于将对象以兼容的格式通过网络传输到跨平台至关重要。
  • 还可以使用序列化创建对象的克隆。
  • 程序中必须包含 Runtime.Serialization 命名空间才能在 C# 中使用序列化。
  • [ Serialized ] 属性用于在 C# 中使类可序列化。

演示 [ Serialized ] 类的示例类:

代码:

[Serializable]
public class Check
{
public int code;
public string name;
}
登录后复制
  • 类似地,如果我们想让类的任何成员不可序列化,我们可以使用 [ NonSerialized() ] 属性。

考虑下面的示例类来演示 [ NonSerialized() ] 属性:

代码:

[Serializable]
public class Check
{
public int code;
public string name;
[NonSerialized()]
Public double price;
}
登录后复制
  • C# 支持以下类型的序列化。

下面给出了 C# 支持的序列化类型:

1.二进制序列化

  • 所有序列化技术中最快的是二进制序列化。
  • 可以使用二进制序列化将对象序列化为二进制流。
  • 当使用二进制序列化将对象序列化为输出流时,对象的身份被保留。
  • 系统。运行时。系列化。格式化程序。程序中必须包含二进制命名空间才能使用二进制序列化。

2. SOAP 序列化

  • 简单对象访问协议是 SOAP 的缩写。
  • 如果我们必须将对象从一个应用程序传输到由异构架构组成的另一应用程序,我们会使用简单对象访问协议序列化。
  • 可移植性是使用简单对象访问协议序列化的主要好处。
  • 可以使用简单对象访问协议序列化以简单对象访问协议的形式序列化对象。
  • 系统。运行时。系列化。格式化程序。程序中必须包含 Soap 命名空间才能使用简单对象访问协议序列化。

3. XML 序列化

  • 类实例的公共成员可以使用 XML 序列化序列化为 XML 流。
  • 与二进制序列化的速度相比,XML 序列化的速度非常慢。
  • 通过使用 XML 序列化提供跨平台支持。
  • XML 序列化是基于文本的。
  • XML 序列化易于阅读。
  • XML 序列化可以轻松编辑。
  • 可以在 XmlAttribute 上设置属性,以使用 XML 序列化来序列化该属性。

考虑下面的代码来演示 XmlAttribute 的使用:

代码:

[XmlAttribute("Name")]
public string Name
{
get
{
return Name;
}
set
{
Name = val;
}
}
登录后复制
  • 我们利用 XmlSerializer 通过 XML 序列化来序列化对象。

考虑下面的代码来演示 XmlSerializer 的使用:

代码:

XmlSerializer Serializer = new XmlSerializer(typeof(Prod));
using (TextWriter Writer = new StreamWriter(@"C:\Prod.xml"))
{
xmlSerializer.Serialize(Writer, prodObject);
}
登录后复制

4.自定义序列化

  • 为了控制某种类型实例的序列化和反序列化,我们使用自定义序列化。
  • 可以通过实现ISerialized接口来实现自定义序列化。
  • GetObjectData() 方法由 ISerialized 接口声明。

考虑下面的代码,通过实现 ISerialized 接口来演示自定义序列化:

代码:

[Serializable]
public class Prod : ISerializable
{
public void GetObjectData(SerializationInfo information, StreamingContext cont)
{
//Usual code
}
}
登录后复制

示例

下面给出的是 C# 序列化的示例:

演示序列化概念的 C# 程序。

代码:

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
//a namespace called demo is created
namespace Demo
{
//Serializable attribute is declared
[Serializable]
//a class check is defined which will be used for serialization
class Check
{
public int identity;
public String nam;
static void Main(string[] args)
{
//an object of the check class is created to serialize it to the file Example.txt
Check ob = new Check();
ob.identity = 10;
ob.nam = "Shobha";
//a file stream is created
IFormatter format = new BinaryFormatter();
Stream stream1 = new FileStream(@"E:\Example.txt",FileMode.Create,FileAccess.Write);
//serialization of the object of the class check is done
format.Serialize(stream1, ob);
stream1.Close();
//a file stream is created
stream1 = new FileStream(@"E:\Example.txt",FileMode.Open,FileAccess.Read);
//the object of the class check is deserialized
Check ob1 = (Check)format.Deserialize(stream1);
//the data is written to the console
Console.WriteLine(ob1.identity);
Console.WriteLine(ob1.nam);
Console.ReadKey();
}
}
}
登录后复制

Output:

C# 序列化

In the above program, a namespace called demo is defined. Then a Serializable attribute is defined. A class check is defined to demonstrate the concept of serialization using this class. Two properties identity and nam are defined in the class to which the values 10 and Shobha are assigned respectively. Then an object of the check class is created to serialize it to the file Example.txt. Then a formatter class is defined to convert the object of the class check to a binary stream.

Then a file stream object is created to open the file Example.txt in write mode to write the values of the properties identity and nam into it. Then serialize method is used to transfer the binary data into the text file. Finally, We use deserialize method to deserialize the contents of the text file Example.txt and the data is written to the console as shown in the output snapshot above.

以上是C# 序列化的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1671
14
CakePHP 教程
1428
52
Laravel 教程
1331
25
PHP教程
1276
29
C# 教程
1256
24
使用 C# 的活动目录 使用 C# 的活动目录 Sep 03, 2024 pm 03:33 PM

使用 C# 的 Active Directory 指南。在这里,我们讨论 Active Directory 在 C# 中的介绍和工作原理以及语法和示例。

C# 中的随机数生成器 C# 中的随机数生成器 Sep 03, 2024 pm 03:34 PM

C# 随机数生成器指南。在这里,我们讨论随机数生成器的工作原理、伪随机数和安全数的概念。

C# 数据网格视图 C# 数据网格视图 Sep 03, 2024 pm 03:32 PM

C# 数据网格视图指南。在这里,我们讨论如何从 SQL 数据库或 Excel 文件加载和导出数据网格视图的示例。

C# 中的阶乘 C# 中的阶乘 Sep 03, 2024 pm 03:34 PM

C# 阶乘指南。这里我们讨论 C# 中阶乘的介绍以及不同的示例和代码实现。

c#多线程和异步的区别 c#多线程和异步的区别 Apr 03, 2025 pm 02:57 PM

多线程和异步的区别在于,多线程同时执行多个线程,而异步在不阻塞当前线程的情况下执行操作。多线程用于计算密集型任务,而异步用于用户交互操作。多线程的优势是提高计算性能,异步的优势是不阻塞 UI 线程。选择多线程还是异步取决于任务性质:计算密集型任务使用多线程,与外部资源交互且需要保持 UI 响应的任务使用异步。

C# 中的模式 C# 中的模式 Sep 03, 2024 pm 03:33 PM

C# 模式指南。在这里,我们讨论 C# 中模式的介绍和前 3 种类型,以及其示例和代码实现。

C# 中的质数 C# 中的质数 Sep 03, 2024 pm 03:35 PM

C# 素数指南。这里我们讨论c#中素数的介绍和示例以及代码实现。

xml怎么改格式 xml怎么改格式 Apr 03, 2025 am 08:42 AM

可以采用多种方法修改 XML 格式:使用文本编辑器(如 Notepad )进行手工编辑;使用在线或桌面 XML 格式化工具(如 XMLbeautifier)进行自动格式化;使用 XML 转换工具(如 XSLT)定义转换规则;或者使用编程语言(如 Python)进行解析和操作。修改时需谨慎,并备份原始文件。

See all articles