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#中DataTable删除行的方法分析

    下面是针对“C#中DataTable删除行的方法分析”的完整攻略: 1. DataTable概述 DataTable是C#中常用的表示二维表格数据的类型,它可以通过添加行和列的方式来构建数据表结构,并支持对数据表中的数据进行增删改查等操作。在使用DataTable时,我们经常需要对表格中的一些行进行删除操作,接下来就介绍几种常用的DataTable删除行的方…

    C# 2023年5月15日
    00
  • c# 如何更简单的使用Polly

    下面是使用Polly库来更简单地进行C#开发的攻略。 什么是Polly库 Polly是一个可以帮助C#开发人员编写更加简洁可靠的.NET应用程序的库,它实现了许多重试、断路器和其他策略,以帮助处理微服务、HTTP请求、数据库连接等各种不确定性因素。 安装Polly 要使用Polly库,我们需要将其安装到我们的.NET项目中,可以通过NuGet包管理器来完成安…

    C# 2023年6月3日
    00
  • C#使用DoddleReport快速生成报表

    下面是关于C#使用DoddleReport快速生成报表的完整攻略。 一、什么是DoddleReport? DoddleReport是一个基于C#的开源报表生成工具,在.NET平台上运行,可以轻松地生成各种类型的报表,如PDF、Excel、Word等。它可以使用任何.NET应用程序、ASP.NET网站、WinForms或WPF应用程序中编写的数据源,生成定制和…

    C# 2023年5月31日
    00
  • C#队列Queue用法实例分析

    C#队列Queue用法实例分析 什么是队列? 队列(queue)是一种先进先出(First-In-First-Out,FIFO)的数据结构,和栈(stack)不同,队列的两端分别称为队首(front)和队尾(rear)。在队列中,新元素插入到队尾(rear),而队首的元素一直存在队列中,直到到达队列的结尾。要从队列中删除元素,需要从队首开始,一直到要删除的元…

    C# 2023年6月7日
    00
  • 解决在Unity中使用FairyGUI遇到的坑

    请您认真阅读下面的攻略: 解决在Unity中使用FairyGUI遇到的坑 问题描述 在Unity中使用FairyGUI进行UI制作,其实现机制是在编辑器中制作UI,同时生成对应的xml和bin文件,然后在Unity中通过代码加载bin文件实现UI展示。但是在操作过程中,我们可能会遇到以下问题: 在Unity中加载FairyGUI生成的.bin文件时,Unit…

    C# 2023年5月15日
    00
  • ASP.NET中ListView(列表视图)的使用前台绑定附源码

    下面我将为您讲解如何在ASP.NET中使用ListView控件进行列表视图的展示,以及如何在前台绑定数据和附源码。 一、什么是ListView控件 ListView控件是ASP.NET Web应用程序中用于呈现数据列表的一种控件,它可以使用模板来定制呈现方式,提供了更丰富的数据呈现方式,比如表格、列表、瓷砖等。 二、ListView控件的使用方法 1. 新建…

    C# 2023年6月3日
    00
  • WPF利用RPC调用其他进程的方法详解

    WPF利用RPC调用其他进程的方法详解 WPF(Windows Presentation Foundation)是一种用于构建Windows桌面应用程序的技术。在WPF应用程序中,我们可以使用RPC(Remote Procedure Call)调用其他进程的方法。本文将详细讲解如何在WPF应用程序中使用RPC调用其他进程的方法,并提供两个示例。 1. 创建R…

    C# 2023年5月15日
    00
  • asp.net 关于==?:和if()else()条件判断等效例子

    ASP.NET 是一种基于 .NET Framework 的 Web 应用程序开发框架,它支持 C#、VB.NET、JScript.NET 和其他高级编程语言。在 ASP.NET 中,我们经常会用到条件判断语句,其中 “==?:” 是常用的一个运算符,而if…else…则是最常见的条件判断语句之一。 1. “==?:”运算符 “==?:” 意思是在判…

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