鍍金池/ 教程/ C#/ C#序列化
C#屬性(Properties)
C#與Java比較
C#方法
C#枚舉
C#關(guān)鍵字
C# StreamReader類
C#不安全代碼
C#文件(I/O)
C#匿名方法
C#線程同步
C# Thread類
C#主線程
C#數(shù)據(jù)類型
C# FileStream類
C#預(yù)處理指令
C#繼承
C#循環(huán)
C#決策結(jié)構(gòu)
C#集合
C#反射
C#類型轉(zhuǎn)換
C#泛型
C# StringReader類
C#歷史
C#運(yùn)算符重載
C#屬性
C#線程實(shí)例:Sleep()方法
C#線程示例:優(yōu)先級(jí)
C#線程實(shí)例:Join()方法
C# BinaryReader類
C#類
C#索引器
C# BinaryWriter類
C#序列化
C#常量和文字
C#程序結(jié)構(gòu)
C#封裝
C#事件
C#可空類型(nullable)
C#基本語法
C#異常處理
C#教程
C#接口
C# System.IO命名空間
C#線程命名實(shí)例
C# StringWriter類
C#線程實(shí)例
C#數(shù)組
C#正則表達(dá)式
C#命名空間
C#反序列化
C#與C++比較
C# TextWriter類
C#多線程
C#字符串
C#是什么?
C#變量
C# FileInfo類
C#線程實(shí)例:Abort()方法
C#結(jié)構(gòu)體
C#運(yùn)算符
C#入門程序
C#多線程生命周期
C# TextReader類
C# DirectoryInfo類
C#委托

C#序列化

在 C# 中,序列化是將對(duì)象轉(zhuǎn)換為字節(jié)流的過程,以便將其保存到內(nèi)存,文件或數(shù)據(jù)庫。序列化的反向過程稱為反序列化。

序列化可在遠(yuǎn)程應(yīng)用程序的內(nèi)部使用。

C# SerializableAttribute

要序列化對(duì)象,需要將SerializableAttribute屬性應(yīng)用在指定類型上。如果不將SerializableAttribute屬性應(yīng)用于類型,則在運(yùn)行時(shí)會(huì)拋出SerializationException異常。

C# 序列化示例

下面看看 C# 中序列化的簡單例子,在這個(gè)示例中將序列化Student類的對(duì)象。在這里使用BinaryFormatter.Serialize(stream,reference)方法來序列化對(duì)象。

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Student
{
    int rollno;
    string name;
    public Student(int rollno, string name)
    {
        this.rollno = rollno;
        this.name = name;
    }
}
public class SerializeExample
{
    public static void Main(string[] args)
    {
        FileStream stream = new FileStream("F:\\worksp\\csharp\\serialize.txt", FileMode.OpenOrCreate);
        BinaryFormatter formatter = new BinaryFormatter();

        Student s = new Student(1010, "Curry");
        formatter.Serialize(stream, s);

        stream.Close();
    }
}

執(zhí)行上面示例代碼后,應(yīng)該可以在F:\worksp\csharp目錄看到創(chuàng)建了一個(gè)文件:serialize.txt,里邊有記錄對(duì)象的相關(guān)信息。內(nèi)容如下所示 -