C# 对象进行反序列化算法
时间: 2023-11-23 18:44:27 浏览: 62
使用C#进行序列化和反序列化
在 C# 中,要对对象进行反序列化,你可以使用 `BinaryFormatter` 类或其他适用的反序列化器。下面是一个使用 `BinaryFormatter` 进行反序列化的示例代码:
```csharp
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class DeserializationExample
{
public static void Main()
{
FileStream fileStream = new FileStream("person.dat", FileMode.Open);
BinaryFormatter formatter = new BinaryFormatter();
// 反序列化
Person deserializedPerson = (Person)formatter.Deserialize(fileStream);
fileStream.Close();
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
}
}
```
在上述示例中,我们首先打开名为 "person.dat" 的文件流,并创建一个 `BinaryFormatter` 对象。然后,我们使用 `formatter.Deserialize` 方法从文件流中读取字节并将其反序列化为一个 `Person` 对象。最后,我们关闭文件流,并输出反序列化后的对象的属性值。
请注意,在进行反序列化时,需要确保反序列化的环境与序列化时的环境相匹配,包括使用相同的类定义、程序集版本等。否则,可能会导致反序列化失败或产生意外的结果。
另外,还有其他的序列化和反序列化方式可供选择,例如使用 JSON 格式进行序列化和反序列化。你可以使用 `DataContractJsonSerializer` 或其他 JSON 序列化器来实现。不同的序列化方式可能具有不同的性能特点和适用场景,你可以根据具体需求选择适合的方式。
阅读全文