在C#中,序列化和反序列化是将对象转换为可存储或传输的格式,以及将存储或传输的数据转换回对象的过程。这在数据持久化、网络通信和跨平台数据交换等场景中非常常见。
// Binary Serialization 二进制序列化示例代码
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person person = new Person { Name = "John", Age = 30 };
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream("person.bin", FileMode.Create))
{
formatter.Serialize(stream, person);
}
}
}
在上面的示例中,我们定义了一个名为Person的可序列化类。我们使用BinaryFormatter类创建一个BinaryFormatter对象,并使用FileStream将Person对象序列化为二进制文件。
// Binary Deserialization 二进制反序列化示例代码
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream("person.bin", FileMode.Open))
{
Person person = (Person)formatter.Deserialize(stream);
Console.WriteLine("Name: " + person.Name);
Console.WriteLine("Age: " + person.Age);
}
}
}
在上面的示例中,我们使用BinaryFormatter类将之前序列化的二进制文件反序列化回Person对象,并打印出对象的属性值。 请注意,在进行序列化和反序列化时,被操作的类需要标记为可序列化,即使用[Serializable]特性进行标记。 除了二进制序列化,还可以使用其他序列化技术,如XML Serialization和JSON Serialization。这些技术涉及到不同的类和方法,但基本的序列化和反序列化概念是相似的。