serializable c#
时间: 2023-08-20 13:09:04 浏览: 149
在C#中,Serializable是一个接口,用于标记一个类可以被序列化。序列化是将对象转换为可以在网络上发送或保存到磁盘的字节流的过程。要使一个类可序列化,只需将Serializable接口添加到类的声明上即可。例如:
```csharp
[Serializable]
public class MyClass
{
// 类的成员和方法
}
```
当使用Serializable接口标记一个类时,该类的所有公共和私有字段都会被默认序列化,除非使用NonSerialized属性来标记特定字段不进行序列化。
要将一个可序列化的对象写入文件或通过网络发送,可以使用BinaryFormatter类或其他序列化器来完成。例如:
```csharp
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
public class Program
{
public static void Main()
{
// 创建可序列化的对象
MyClass obj = new MyClass();
// 创建文件流
using (FileStream fs = new FileStream("data.bin", FileMode.Create))
{
// 创建二进制格式化器
BinaryFormatter formatter = new BinaryFormatter();
// 将对象序列化到文件流中
formatter.Serialize(fs, obj);
}
}
}
```
上述代码将一个可序列化的对象obj写入名为"data.bin"的文件中。要反序列化对象,可以使用相同的BinaryFormatter类,调用Deserialize方法来读取文件并还原对象。
请注意,如果在可序列化的类中更改了类的结构(添加/删除字段等),则可能会导致反序列化失败,因为序列化的数据与类的结构不匹配。在进行反序列化之前,确保类的结构没有更改或提供适当的版本控制机制。
阅读全文
相关推荐
















