c#

C#类的序列化与反序列化

小樊
82
2024-08-11 23:49:43
栏目: 编程语言

在 C# 中,可以使用序列化和反序列化来将对象转换为字节流或将字节流转换为对象。这些操作可以帮助我们在不同系统之间传输对象或将对象保存到文件中。

以下是一个简单的示例,展示如何在 C# 中进行类的序列化和反序列化:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "Alice", Age = 30 };

        // 序列化对象
        IFormatter formatter = new BinaryFormatter();
        using (Stream stream = new FileStream("person.dat", FileMode.Create, FileAccess.Write, FileShare.None))
        {
            formatter.Serialize(stream, person);
        }

        // 反序列化对象
        using (Stream stream = new FileStream("person.dat", FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            Person deserializedPerson = (Person)formatter.Deserialize(stream);
            Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
        }
    }
}

在上面的示例中,我们定义了一个 Person 类,并对其进行了序列化和反序列化操作。序列化使用 BinaryFormatter 类,将 Person 对象保存到文件中。反序列化则是通过将文件中的字节流转换回 Person 对象。

需要注意的是,要使一个类可以序列化,需要在类的定义上加上 [Serializable] 特性。除了使用 BinaryFormatter 进行序列化和反序列化外,还可以使用其他序列化方式,如 XML 序列化、JSON 序列化等。

0
看了该问题的人还看了