以下文章提供了 C# 序列化的概述。將物件實例轉換為資料流的過程稱為序列化,並且物件實例的狀態(tài)轉換為資料流,因為它可以跨不同網(wǎng)路傳輸並持久保存在儲存位置中。這是序列化的一個優(yōu)點,可以將轉換後的資料流以跨平臺相容的格式跨不同網(wǎng)路傳輸,並將轉換後的串流資料以持久或非持久物件狀態(tài)保存到儲存媒體中,以便可以在不同的網(wǎng)路上傳輸相同的副本。後來創(chuàng)建的。
C# 序列化物件的步驟
以下是C#序列化物件的步驟:
- 建立了一個流物件。
- 建立了一個 BinaryFormatter 物件。
- 呼叫 Serialize( ) 方法。
C# 序列化的工作原理
- 每當我們使用應用程式時,都需要將資料儲存在持久或非持久的媒體中,以便以後可以檢索相同的資料。這可以透過使用序列化的概念來實現(xiàn)。
- 將物件的實例轉換為位元組流,將物件的狀態(tài)移到檔案的記憶體或資料庫中的過程稱為序列化。
- 序列化對於將物件以相容的格式透過網(wǎng)路傳輸?shù)娇缙脚_至關重要。
- 也可以使用序列化來建立物件的克隆。
- 程式中必須包含 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.二進位序列化
- 所有序列化技術中最快的是二元序列化。
- 可以使用二進位序列化將物件序列化為二進位流。
- 當使用二元序列化將物件序列化為輸出流時,物件的身份就會保留。
- 系統(tǒng)。運行時。系列化。格式化程序。程式中必須包含二進位命名空間才能使用二進位序列化。
2. SOAP 序列化
- 簡單物件存取協(xié)定是 SOAP 的縮寫。
- 如果我們必須將物件從一個應用程式傳輸?shù)接僧愘|架構組成的另一應用程序,我們會使用簡單物件存取協(xié)定序列化。
- 可移植性是使用簡單物件存取協(xié)定序列化的主要好處。
- 可以使用簡單物件存取協(xié)定序列化以簡單物件存取協(xié)定的形式序列化物件。
- 系統(tǒng)。運行時。系列化。格式化程序。程式中必須包含 Soap 命名空間才能使用簡單物件存取協(xié)定序列化。
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介面來實現(xiàn)自訂序列化。
- 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:
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中文網(wǎng)其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

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

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

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

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

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

將 XML 轉換為 JSON 的方法包括:使用編程語言(如 Python、Java、C#)編寫腳本或程序進行轉換;使用在線工具(如 XML 轉換為 JSON、Gojko's XML 轉換器、XML 在線工具)粘貼或上傳 XML 數(shù)據(jù)並選擇 JSON 格式輸出;使用 XML 到 JSON 轉換器(如 Oxygen XML Editor、Stylus Studio、Altova XMLSpy)執(zhí)行轉換任務;使用 XSLT 樣式表將 XML 轉換為 JSON;使用數(shù)據(jù)集成工具(如 Informatic

C# 多線程編程是一種讓程序同時執(zhí)行多項任務的技術,它可以通過提升性能、提高響應能力和實現(xiàn)並行處理來提高程序效率。雖然 Thread 類提供了直接創(chuàng)建線程的方法,但 Task 和 async/await 等高級工具可以提供更安全的異步操作和更簡潔的代碼結構。多線程編程中常見的難題包括死鎖、競態(tài)條件和資源洩漏,需要仔細設計線程模型和使用適當?shù)耐綑C制來避免這些問題。

如何利用.NET構建應用?使用.NET構建應用可以通過以下步驟實現(xiàn):1)了解.NET基礎知識,包括C#語言和跨平臺開發(fā)支持;2)學習核心概念,如.NET生態(tài)系統(tǒng)的組件和工作原理;3)掌握基本和高級用法,從簡單控制臺應用到復雜的WebAPI和數(shù)據(jù)庫操作;4)熟悉常見錯誤與調試技巧,如配置和數(shù)據(jù)庫連接問題;5)應用性能優(yōu)化與最佳實踐,如異步編程和緩存。

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.
