在C#中,序列化和反序列化是將對象轉換為字節流以便存儲或傳輸,以及從字節流還原為對象的過程。這里是一個簡單的示例,展示了如何使用C#內置的序列化和反序列化方法。
首先,我們需要創建一個簡單的類,例如Person
:
using System;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
接下來,我們將演示如何序列化和反序列化這個類。
要將對象序列化為字節流,我們可以使用BinaryFormatter
類。以下是一個示例:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class SerializeDeserializeExample
{
public static void Main()
{
Person person = new Person { Name = "John Doe", Age = 30 };
// 序列化對象
using (MemoryStream memoryStream = new MemoryStream())
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, person);
// 將字節流保存到文件
File.WriteAllBytes("person.bin", memoryStream.ToArray());
}
}
}
要從字節流中反序列化對象,我們可以使用相同的BinaryFormatter
類。以下是一個示例:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class SerializeDeserializeExample
{
public static void Main()
{
// 從文件中讀取字節流
byte[] bytes = File.ReadAllBytes("person.bin");
// 反序列化對象
using (MemoryStream memoryStream = new MemoryStream(bytes))
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
Person deserializedPerson = (Person)binaryFormatter.Deserialize(memoryStream);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
}
}
請注意,BinaryFormatter
已在.NET Core 3.0及更高版本中棄用。作為替代方案,您可以使用Json.NET
(現在稱為Newtonsoft.Json
)或System.Text.Json
庫進行序列化和反序列化。以下是使用System.Text.Json
的示例:
首先,安裝System.Text.Json
庫:
dotnet add package System.Text.Json
然后,使用以下代碼進行序列化和反序列化:
using System;
using System.IO;
using System.Text.Json;
public class SerializeDeserializeExample
{
public static void Main()
{
Person person = new Person { Name = "John Doe", Age = 30 };
// 序列化對象
string json = JsonSerializer.Serialize(person);
File.WriteAllText("person.json", json);
// 反序列化對象
string deserializedJson = File.ReadAllText("person.json");
Person deserializedPerson = JsonSerializer.Deserialize<Person>(deserializedJson);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
}
這將使用System.Text.Json
庫進行序列化和反序列化,而不是已棄用的BinaryFormatter
類。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。