在 C# 中,可以使用序列化和反序列化來將對象轉換為字節流或字符串,以便在不同的應用程序之間進行傳輸或存儲。
要實現序列化和反序列化,需要使用 System.Runtime.Serialization 命名空間中的相關類和接口。以下是一個簡單的示例,展示了如何在 C# 中實現序列化和反序列化:
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class Program
{
public static void Main(string[] args)
{
// 創建一個 Person 對象
Person person = new Person
{
Name = "John",
Age = 30
};
// 序列化對象
byte[] serializedData = SerializeObject(person);
// 反序列化對象
Person deserializedPerson = DeserializeObject<Person>(serializedData);
// 輸出反序列化后的對象的屬性值
Console.WriteLine($"Name: {deserializedPerson.Name}");
Console.WriteLine($"Age: {deserializedPerson.Age}");
}
// 序列化對象
public static byte[] SerializeObject<T>(T obj)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream memoryStream = new MemoryStream())
{
formatter.Serialize(memoryStream, obj);
return memoryStream.ToArray();
}
}
// 反序列化對象
public static T DeserializeObject<T>(byte[] data)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream memoryStream = new MemoryStream(data))
{
return (T)formatter.Deserialize(memoryStream);
}
}
}
在上述示例中,首先定義了一個可序列化的 Person 類。然后,在 Main 方法中創建了一個 Person 對象,并將其序列化為字節數組。接下來,使用 DeserializeObject 方法將字節數組反序列化為 Person 對象,并輸出其屬性值。
請注意,上述示例使用了 BinaryFormatter 類進行序列化和反序列化。還可以使用其他序列化方式,如 XML 序列化(XmlSerializer)或 JSON 序列化(Json.NET)來實現序列化和反序列化。