117.info
人生若只如初见

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

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

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

  1. 定义一个可序列化的类,该类必须标记为 [Serializable] 属性,以指示它可以被序列化。
[Serializable]
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}
  1. 使用 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 = https://www.yisu.com/ask/SerializeObject(person);>(serializedData);

        // 输出反序列化后的对象的属性值
        Console.WriteLine($"Name: {deserializedPerson.Name}");
        Console.WriteLine($"Age: {deserializedPerson.Age}");
    }

    // 序列化对象
    public static byte[] SerializeObject(T obj)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        using (MemoryStream memoryStream = new MemoryStream())
        {
            formatter.Serialize(memoryStream, obj);
            return memoryStream.ToArray();
        }
    }

    // 反序列化对象
    public static T DeserializeObject(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)来实现序列化和反序列化。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe240AzsLAQBXBFM.html

推荐文章

  • c# winform组件 怎样集成

    在C# WinForms应用程序中集成组件通常涉及以下几个步骤: 添加引用: 首先,确保你已经安装了所需的组件。例如,如果你想要集成一个第三方库,你需要将该库的DLL...

  • c# winform组件 怎样提高效率

    要提高C# WinForms应用程序的效率,可以从多个方面入手,包括优化绘图过程、使用异步操作、合理设置控件属性等。以下是一些具体的优化策略:
    优化绘图过程 ...

  • c# winform组件 怎样自定义

    在C#中,要自定义WinForms组件,您需要创建一个继承自现有控件的新类,并重写其构造函数、事件处理程序和其他相关方法。以下是一个简单的示例,说明如何创建一个...

  • c# winform组件 怎样选择合适

    在C# WinForms应用程序开发中,选择合适的组件对于构建高效、用户友好的界面至关重要。以下是一些选择合适组件的建议:
    控件选择 根据需求选择:选择控件时...

  • linux怎么安装wps需要的依赖包

    要在Linux上安装WPS Office,您需要安装以下依赖包: Freetype字体库:sudo apt-get install freetype* Fontconfig字体配置库:sudo apt-get install fontconfig...

  • mysql groupby语句的用法是什么

    MySQL的GROUP BY语句用于根据指定的列对查询结果进行分组。它通常与聚合函数(如SUM、COUNT、AVG等)一起使用,用于对每个组的数据进行计算或汇总。
    GROUP ...

  • c++中max函数的用途有哪些

    在C++中,max函数有以下几个用途: 比较两个值的大小,返回较大的值。例如:max(3, 5) 返回 5。 比较两个对象的大小,返回较大的对象。这需要使用自定义的比较函...

  • ubuntu terminal打不开的原因有哪些

    有几个常见的原因可能导致Ubuntu终端无法打开: 终端程序损坏:终端程序可能损坏或受到其他软件的干扰,导致无法正常打开。可以尝试重新安装终端程序来解决该问题...