c#对象反序列化与对象序列化示例详解

介绍

首先我们需要明确一下对象序列化与反序列化的概念,对象序列化就是将对象转化为可以存储或传输的格式。相反,反序列化表示将存储格式或传输格式转化为对象。

C#语言提供了一个方便的API,可以使用这个API轻松地将对象序列化和反序列化。这个API被称为“System.Runtime.Serialization”。

C#对象序列化示例

接下来我们将演示如何使用C#对象序列化,我们将会创建一个Person类,并使用此类的实例来演示对象序列化和反序列化。下面是Person类的结构。

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

首先,我们需要将Person对象序列化并存储到文件中。以下是序列化一个Person对象的示例代码。

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

namespace Serialization
{
    [Serializable]
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Create a new Person object
            var person = new Person
            {
                FirstName = "John",
                LastName = "Doe",
                Age = 30
            };

            // Serializing Person object
            BinaryFormatter formatter = new BinaryFormatter();
            using (FileStream stream = new FileStream("person.bin", FileMode.Create))
            {
                formatter.Serialize(stream, person);
            }

            Console.WriteLine("Person object serialized successfully.");
        }
    }
}

在上面的示例中,我们首先创建了一个名为“person”的Person对象。接下来,我们使用BinaryFormatter类序列化这个对象,并将其存储在名为“person.bin”的文件中。使用“using”块,我们可以确保文件流在执行完序列化后自动被关闭。最后,我们输出一条消息“序列化成功”。

C#对象反序列化示例

下面我们将演示如何使用C#对象反序列化。在这个示例中,我们将从文件中反序列化一个Person对象。以下是完整的代码示例。

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

namespace Serialization
{
    [Serializable]
    public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // Deserializing Person object
            BinaryFormatter formatter = new BinaryFormatter();
            using (FileStream stream = new FileStream("person.bin", FileMode.Open))
            {
                Person person = (Person)formatter.Deserialize(stream);
                Console.WriteLine("Person object deserialized successfully.");
                Console.WriteLine("First name: " + person.FirstName);
                Console.WriteLine("Last name: " + person.LastName);
                Console.WriteLine("Age: " + person.Age);
            }
        }
    }
}

在上面的代码示例中,我们首先使用BinaryFormatter类反序列化Person对象,并从名为“person.bin”的文件中读取该对象。一旦反序列化成功,我们将Person对象分配给“person”变量。最后,我们输出了反序列化后的Person对象的数据。如果一切顺利,你将看到一条消息“反序列化成功”并显示Person对象的数据。

结束语

希望上述示例能够帮助你更好地理解C#中的对象序列化和反序列化。在以上的示例中,我们演示了如何使用BinaryFormatter类进行序列化和反序列化。除此之外,C#中还有其他格式可以使用,例如Json格式,使用Json序列化和反序列化需要使用Newtonsoft.Json类库。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#对象反序列化与对象序列化示例详解 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C# 后台处理图片的几种方法

    让我详细讲解一下“C# 后台处理图片的几种方法”的完整攻略。 一、背景 随着互联网的发展,图片已经成为了我们生活中不可或缺的一部分,也成为了我们经常会用到的一种媒体类型。在开发 Web 应用程序时,我们通常需要后台对图片进行处理,比如缩放、裁剪、添加水印等,以便我们可以在页面中展示或者保存这些图片。 二、C# 处理图片的几种方法 在 C# 中,有几种方法可以…

    C# 2023年6月1日
    00
  • 微信小程序与AspNetCore SignalR聊天实例代码

    微信小程序与AspNetCore SignalR聊天实例代码 在本攻略中,我们将详细讲解如何使用微信小程序和AspNetCore SignalR实现聊天功能,并提供两个示例说明。 步骤一:创建AspNetCore SignalR应用程序 首先,我们需要创建一个AspNetCore SignalR应用程序。您可以使用Visual Studio创建一个新的Asp…

    C# 2023年5月17日
    00
  • C#中Quartz的使用

    安装 NuGet 包:在 Visual Studio 中打开项目,右键单击项目名称,选择“管理 NuGet 包”,搜索“Quartz”并安装。 创建作业:创建一个实现了 IJob 接口的类,该接口包含一个 Execute 方法,该方法将在作业运行时调用。例如: public class MyJob : IJob { public Task Execute(I…

    C# 2023年4月17日
    00
  • 关于C#中的Invoke示例详解

    对于关于C#中的Invoke示例详解,我们可以按照以下步骤进行: 1. 什么是Invoke 在C# 中,Invoke是一个委托的方法,当我们使用多线程访问 UI 元素时,就需要使用Invoke。因为大多数的UI组件是跨线程的,而直接对线程不安全的UI组件进行操作会导致线程异常或UI操作的错误。 2. Invoke的使用场景及语法 使用Invoke的典型场景是…

    C# 2023年5月31日
    00
  • C#实现最完整的文件和目录操作类实例

    C#实现最完整的文件和目录操作类实例攻略 C#的文件及目录操作类提供了一套操作文件和目录的API,刚开始学习时可能会觉得有些困难。本文将介绍如何使用C#文件及目录操作类实现常用的文件和目录操作。在开始之前,我们需要了解C#中提供了哪些文件及目录操作的类,下面是常用的几个: File:提供对文件的创建、复制、删除和移动等基本操作。 Directory:提供对目…

    C# 2023年5月15日
    00
  • C#服务器NFS共享文件夹搭建与上传图片文件的实现

    下面是“C#服务器NFS共享文件夹搭建与上传图片文件的实现”的完整攻略。 搭建NFS服务器 安装NFS服务器软件 在Linux系统上搭建NFS服务器,首先需要安装NFS服务器软件。可以使用以下命令安装: sudo apt-get install nfs-kernel-server 创建NFS共享目录 在Linux系统上,需要创建一个目录作为NFS共享目录。可…

    C# 2023年6月1日
    00
  • CodeBuilder 3 预览版发布

    CodeBuilder是一款强大的代码生成工具,目前发布了 3.0 preview 2,大家可以前去下载体验 官方主页。 1、多种数据源 基于 ADO.NET 的数据驱动 基于 Fireasy 3,支持从 SqlServer、MySql、Oracle、Firebird、PostgreSql、SQLite、达梦、人大金仓、神通数据库,以及 OleDb 驱动。可…

    C# 2023年4月25日
    00
  • ASP.NET Core 模型验证过滤器的两种实现方法

    ASP.NET Core 模型验证过滤器是一种非常有用的技术,它可以帮助我们在控制器方法执行之前验证模型数据的有效性。在本文中,我们将介绍ASP.NET Core模型验证过滤器的两种实现方法。 方法一:使用特性 ASP.NET Core提供了一种使用特性来实现模型验证过滤器的方法。我们可以在模型类的属性上添加特性来指定该属性的验证规则。以下是一个示例模型类:…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部