`n 如何在C#中实现序列化和反序列化?

如何在C#中实现序列化和反序列化?

Clock Icon 发布时间:2026/10/25 5:39  · 

在NET/" style="text-decoration: none; color: inherit;" title="C#">C#中,序列化和反序列化是将对象转换为可存储格式和从存储格式恢复对象的过程。这一过程通常用于数据传输或存储操作。序列化可以将对象转换为XML、JSON等格式,而反序列化则反向操作,将这些格式转换回对象。
NET/" style="text-decoration: none; color: inherit;" title="C#">C#提供了多种方法来实现这一过程。其中,常用的有BinaryFormatter、XmlSerializer和JsonSerializer等。BinaryFormatter适用于将对象序列化为二进制格式,XmlSerializer则是用于XML格式,而JsonSerializer主要用于JSON格式。
使用BinaryFormatter时,对象需要标记为可序列化,通常使用`[Serializable]`特性。代码示例可以如下:
```csharp[Serializable]public class Person{ public string Name { get; set; } public int Age { get; set; }}```序列化对象可以通过以下方式实现:
```csharpusing (FileStream stream = new FileStream("person.bin", FileMode.Create)){ BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, person);}```反序列化则可以使用类似如下的代码:
```csharpusing (FileStream stream = new FileStream("person.bin", FileMode.Open)){ BinaryFormatter formatter = new BinaryFormatter(); Person person = (Person)formatter.Deserialize(stream);}```
对于XmlSerializer,其使用相对直观。需要定义一个类,并指定属性。示例代码:
```csharppublic class Employee{ public string Name { get; set; } public int ID { get; set; }}```序列化操作如:
```csharpXmlSerializer serializer = new XmlSerializer(typeof(Employee));using (TextWriter writer = new StreamWriter("employee.xml")){ serializer.Serialize(writer, employee);}```反序列化的实现方式如:
```csharpXmlSerializer serializer = new XmlSerializer(typeof(Employee));using (TextReader reader = new StreamReader("employee.xml")){ Employee employee = (Employee)serializer.Deserialize(reader);}```
对于JsonSerializer,可以通过引入Newtonsoft.Json库来实现。首先需要定义类结构:
```csharppublic class Car{ public string Make { get; set; } public string Model { get; set; }}```序列化为JSON格式示例:
```csharpstring json = JsonConvert.SerializeObject(car);File.WriteAllText("car.json", json);```反序列化的实现:
```csharpstring json = File.ReadAllText("car.json");Car car = JsonConvert.DeserializeObject(json);}```
选择合适的序列化格式非常重要,通常取决于数据传输的需求和上下文。例如,XML适合于结构化数据,JSON则更为简洁,二进制格式在存储效率上更有优势。使用上述方法,可以有效地实现对象的序列化和反序列化,以满足不同场合的需求。

推荐文章

热门文章