C#序列化与反序列化怎么实现

   2024-11-08 3310
核心提示:在 C# 中,可以使用序列化和反序列化来将对象转换为字节流或字符串,以便在不同的应用程序之间进行传输或存储。要实现序列化和反

在 C# 中,可以使用序列化和反序列化来将对象转换为字节流或字符串,以便在不同的应用程序之间进行传输或存储。

要实现序列化和反序列化,需要使用 System.Runtime.Serialization 命名空间中的相关类和接口。以下是一个简单的示例,展示了如何在 C# 中实现序列化和反序列化:

定义一个可序列化的类,该类必须标记为 [Serializable] 属性,以指示它可以被序列化。
[Serializable]public class Person{    public string Name { get; set; }    public int Age { get; set; }}
使用 System.Runtime.Serialization.Formatters.Binary 命名空间中的 BinaryFormatter 类进行序列化和反序列化。
using System;using System.IO;using System.Runtime.Serialization.Formatters.Binary;public class Program{    public static void Main(string[] args)    {        // 创建一个 Person 对象        Person person = new Person        {            Name = "John",            Age = 30        };        // 序列化对象        byte[] serializedData = SerializeObject(person);        // 反序列化对象        Person deserializedPerson = DeserializeObject<Person>(serializedData);        // 输出反序列化后的对象的属性值        Console.WriteLine($"Name: {deserializedPerson.Name}");        Console.WriteLine($"Age: {deserializedPerson.Age}");    }    // 序列化对象    public static byte[] SerializeObject<T>(T obj)    {        BinaryFormatter formatter = new BinaryFormatter();        using (MemoryStream memoryStream = new MemoryStream())        {            formatter.Serialize(memoryStream, obj);            return memoryStream.ToArray();        }    }    // 反序列化对象    public static T DeserializeObject<T>(byte[] data)    {        BinaryFormatter formatter = new BinaryFormatter();        using (MemoryStream memoryStream = new MemoryStream(data))        {            return (T)formatter.Deserialize(memoryStream);        }    }}

在上述示例中,首先定义了一个可序列化的 Person 类。然后,在 Main 方法中创建了一个 Person 对象,并将其序列化为字节数组。接下来,使用 DeserializeObject 方法将字节数组反序列化为 Person 对象,并输出其属性值。

请注意,上述示例使用了 BinaryFormatter 类进行序列化和反序列化。还可以使用其他序列化方式,如 XML 序列化(XmlSerializer)或 JSON 序列化(Json.NET)来实现序列化和反序列化。

 
举报打赏
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行

网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策网站留言    |  赣ICP备2021007278号