国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
C# 序列化對象的步驟
C# 序列化的工作原理
1.二進制序列化
2. SOAP 序列化
3. XML 序列化
4.自定義序列化
示例

C# 序列化

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

以下文章提供了 C# 序列化的概述。將對象實例轉(zhuǎn)換為數(shù)據(jù)流的過程稱為序列化,并且對象實例的狀態(tài)轉(zhuǎn)換為數(shù)據(jù)流,因為它可以跨不同網(wǎng)絡(luò)傳輸并持久保存在存儲位置中。這就是序列化的優(yōu)點,可以將轉(zhuǎn)換后的數(shù)據(jù)流以跨平臺兼容的格式跨不同網(wǎng)絡(luò)傳輸,并將轉(zhuǎn)換后的流數(shù)據(jù)以持久或非持久對象狀態(tài)保存到存儲介質(zhì)中,以便可以在不同的網(wǎng)絡(luò)上傳輸相同的副本。后來創(chuàng)建的。

C# 序列化對象的步驟

以下是C#序列化對象的步驟:

  • 創(chuàng)建了一個流對象。
  • 創(chuàng)建了一個 BinaryFormatter 對象。
  • 調(diào)用 Serialize( ) 方法。

C# 序列化的工作原理

  • 每當(dāng)我們使用應(yīng)用程序時,都需要將數(shù)據(jù)存儲在持久或非持久的介質(zhì)中,以便以后可以檢索相同的數(shù)據(jù)。這可以通過使用序列化的概念來實現(xiàn)。
  • 將對象的實例轉(zhuǎn)換為字節(jié)流,將對象的狀態(tài)移動到文件的內(nèi)存或數(shù)據(jù)庫中的過程稱為序列化。
  • 序列化對于將對象以兼容的格式通過網(wǎng)絡(luò)傳輸?shù)娇缙脚_至關(guān)重要。
  • 還可以使用序列化創(chuàng)建對象的克隆。
  • 程序中必須包含 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.二進制序列化

  • 所有序列化技術(shù)中最快的是二進制序列化。
  • 可以使用二進制序列化將對象序列化為二進制流。
  • 當(dāng)使用二進制序列化將對象序列化為輸出流時,對象的身份被保留。
  • 系統(tǒng)。運行時。系列化。格式化程序。程序中必須包含二進制命名空間才能使用二進制序列化。

2. SOAP 序列化

  • 簡單對象訪問協(xié)議是 SOAP 的縮寫。
  • 如果我們必須將對象從一個應(yīng)用程序傳輸?shù)接僧悩?gòu)架構(gòu)組成的另一應(yīng)用程序,我們會使用簡單對象訪問協(xié)議序列化。
  • 可移植性是使用簡單對象訪問協(xié)議序列化的主要好處。
  • 可以使用簡單對象訪問協(xié)議序列化以簡單對象訪問協(xié)議的形式序列化對象。
  • 系統(tǒng)。運行時。系列化。格式化程序。程序中必須包含 Soap 命名空間才能使用簡單對象訪問協(xié)議序列化。

3. XML 序列化

  • 類實例的公共成員可以使用 XML 序列化序列化為 XML 流。
  • 與二進制序列化的速度相比,XML 序列化的速度非常慢。
  • 通過使用 XML 序列化提供跨平臺支持。
  • XML 序列化是基于文本的。
  • XML 序列化易于閱讀。
  • XML 序列化可以輕松編輯。
  • 可以在 XmlAttribute 上設(shè)置屬性,以使用 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.自定義序列化

  • 為了控制某種類型實例的序列化和反序列化,我們使用自定義序列化。
  • 可以通過實現(xiàn)ISerialized接口來實現(xiàn)自定義序列化。
  • GetObjectData() 方法由 ISerialized 接口聲明。

考慮下面的代碼,通過實現(xiàn) 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# 序列化的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

C# 中的隨機數(shù)生成器 C# 中的隨機數(shù)生成器 Sep 03, 2024 pm 03:34 PM

C# 隨機數(shù)生成器指南。在這里,我們討論隨機數(shù)生成器的工作原理、偽隨機數(shù)和安全數(shù)的概念。

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

C# 階乘指南。這里我們討論 C# 中階乘的介紹以及不同的示例和代碼實現(xiàn)。

c#多線程和異步的區(qū)別 c#多線程和異步的區(qū)別 Apr 03, 2025 pm 02:57 PM

多線程和異步的區(qū)別在于,多線程同時執(zhí)行多個線程,而異步在不阻塞當(dāng)前線程的情況下執(zhí)行操作。多線程用于計算密集型任務(wù),而異步用于用戶交互操作。多線程的優(yōu)勢是提高計算性能,異步的優(yōu)勢是不阻塞 UI 線程。選擇多線程還是異步取決于任務(wù)性質(zhì):計算密集型任務(wù)使用多線程,與外部資源交互且需要保持 UI 響應(yīng)的任務(wù)使用異步。

C# 中的質(zhì)數(shù) C# 中的質(zhì)數(shù) Sep 03, 2024 pm 03:35 PM

C# 素數(shù)指南。這里我們討論c#中素數(shù)的介紹和示例以及代碼實現(xiàn)。

C#與C:歷史,進化和未來前景 C#與C:歷史,進化和未來前景 Apr 19, 2025 am 12:07 AM

C#和C 的歷史與演變各有特色,未來前景也不同。1.C 由BjarneStroustrup在1983年發(fā)明,旨在將面向?qū)ο缶幊桃隒語言,其演變歷程包括多次標(biāo)準化,如C 11引入auto關(guān)鍵字和lambda表達式,C 20引入概念和協(xié)程,未來將專注于性能和系統(tǒng)級編程。2.C#由微軟在2000年發(fā)布,結(jié)合C 和Java的優(yōu)點,其演變注重簡潔性和生產(chǎn)力,如C#2.0引入泛型,C#5.0引入異步編程,未來將專注于開發(fā)者的生產(chǎn)力和云計算。

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

C# 模式指南。在這里,我們討論 C# 中模式的介紹和前 3 種類型,以及其示例和代碼實現(xiàn)。

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

可以采用多種方法修改 XML 格式:使用文本編輯器(如 Notepad )進行手工編輯;使用在線或桌面 XML 格式化工具(如 XMLbeautifier)進行自動格式化;使用 XML 轉(zhuǎn)換工具(如 XSLT)定義轉(zhuǎn)換規(guī)則;或者使用編程語言(如 Python)進行解析和操作。修改時需謹慎,并備份原始文件。

C# 中的回文 C# 中的回文 Sep 03, 2024 pm 03:34 PM

C# 回文指南。在這里,我們討論 C# 中回文背后的介紹和邏輯,以及各種方法及其代碼。

See all articles