C# 编程指南:序列化和反序列化

在C#中,序列化和反序列化是将对象转换为可存储或传输的格式,以及将存储或传输的数据转换回对象的过程。这在数据持久化、网络通信和跨平台数据交换等场景中非常常见。

部分
1
序列化(Serialization)
序列化是将对象转换为字节流或其他格式的过程。
在C#中,可以使用不同的序列化技术,如Binary Serialization、XML Serialization和JSON Serialization等。
// 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对象序列化为二进制文件。

部分
2
反序列化(Deserialization)
反序列化是将序列化的数据转换回对象的过程。
在C#中,可以使用相应的反序列化技术来还原序列化后的数据。
// 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。这些技术涉及到不同的类和方法,但基本的序列化和反序列化概念是相似的。

    目录

  • 1.
    序列化(Serialization)
  • 2.
    反序列化(Deserialization)