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

在 C# 中,可以使用序列化和反序列化来将对象转换为字节流或字符串,以便在不同的应用程序之间进行传输或存储。要实现序列化和反序列化,需要使用 System.Runtime.Serialization 命名空间中的相关类和接口。以下是一个简单的示例,展示了如何在 C# 中实现序列化和反序列化:定义一个可序列化的类,该类必须标记为 [Serializable] 属性,以指示它可以被序列化。[Seri

在 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 = 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)来实现序列化和反序列化。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/847178.html

(0)
派派
上一篇 2024-01-31
下一篇 2024-01-31

相关推荐

  • maven怎么配置本地仓库路径

    在Maven中配置本地仓库路径非常简单,只需在Maven的配置文件settings.xml中进行相应的配置即可。以下是配置本地仓库路径的步骤:找到Maven的配置文件settings.xml,通常可以在Maven安装目录下的conf文件夹中找到该文件。打开settings.xml文件,在其中找到标签,该标签用于指定本地仓库路径。在标签中填入你希望设置的本地仓库路径,例如:/path/to/your

    2024-02-27
    0
  • hbase数据导出到hive的方法是什么

    HBase数据导出到Hive可以通过以下几种方法实现:使用Apache Sqoop:Sqoop是一个用于在Hadoop和关系型数据库之间进行数据传输的工具,可以将HBase中的数据导出到Hive中。首先需要通过Sqoop连接HBase,并指定要导出的数据表,然后将数据导入到Hive中。使用Apache Spark:Spark是一个快速通用的大数据处理引擎,可以与Hive和HBase集成。通过Spa

    2024-03-19
    0
  • php中imagecopyresampled怎么使用

    imagecopyresampled() 函数用于将一幅图像的一部分复制到另一幅图像,并对其进行重新采样。其语法如下:bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $

    2024-05-17
    0
  • R语言如何筛除含空白的行

    在R语言中,可以使用grep函数结合正则表达式来筛除含空白的行。下面是一个简单的例子:# 创建一个包含空白行的数据框df <- data.frame(col1 = c("a", "b", "c", " ", "d"),col2 = c(1, 2, 3, 4, 5))# 找出含有空白的行blank_rows <- grep("\\s", df$col1)# 删掉含有空白的行df <-

    2024-02-22
    0
  • sql存储过程有什么用(sql存储过程的使用)

    sql存储过程有什么用,sql存储过程的使用内容导航:sql存储过程有啥用sqlserver存储过程是什么意思sql存储过程分页如何写呢SQL存储过程的作用和优缺点一、sql存储过程有啥用Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用。当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句。这样就可以提高存储过程的

    2022-05-11
    0
  • qq和微信区别是什么意思(QQ跟微信有什么区别)

    qq和微信区别是什么意思,QQ跟微信有什么区别 内容导航: QQ和微信的区别是什么 王者微信区怎么转qq 天天爱消除请问如何转换QQ区和微信区 微信与QQ的区别是啥 一、QQ和微信…

    2022-08-22
    0

发表回复

登录后才能评论