c#序列化跟反序列化
时间: 2023-10-30 09:58:58 浏览: 126
C#中的序列化和反序列化是用来将对象转换为字节流或从字节流恢复对象的过程。这在数据存储、网络传输和对象持久化方面非常有用。
要进行序列化和反序列化,你可以使用.NET框架中的System.Runtime.Serialization命名空间提供的类。下面是一个简单的示例:
首先,定义一个需要序列化和反序列化的类,假设为Person:
```csharp
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
```
接下来,我们可以使用BinaryFormatter进行序列化和反序列化。示例代码如下:
```csharp
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class Program
{
public static void Main()
{
Person person = new Person() { Name = "John", Age = 30 };
// 序列化对象到字节流
byte[] data = Serialize(person);
// 反序列化字节流到对象
Person deserializedPerson = Deserialize(data);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
public static byte[] Serialize(Person obj)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream stream = new MemoryStream())
{
formatter.Serialize(stream, obj);
return stream.ToArray();
}
}
public static Person Deserialize(byte[] data)
{
BinaryFormatter formatter = new BinaryFormatter();
using (MemoryStream stream = new MemoryStream(data))
{
return (Person)formatter.Deserialize(stream);
}
}
}
```
在上述示例中,我们通过Serialize方法将Person对象序列化为字节流,然后通过Deserialize方法将字节流反序列化为Person对象。通过打印反序列化后的Person对象的属性,我们可以验证序列化和反序列化的过程是否成功。
请注意,在进行序列化和反序列化时,类需要标记为可序列化,即使用[Serializable]属性进行标记。
希望这个简单的示例能帮助你理解和实现C#中的序列化和反序列化操作。如果你有更多特定的问题,请随时提问!
阅读全文