C# 三种序列化方法分享

下面就来详细讲解一下“C# 三种序列化方法分享”的完整攻略。首先先介绍一下序列化的概念。

序列化

序列化就是将对象转化为可以存储或传输的格式,常见的格式有 XML、JSON 等。在 C# 中,可以借助 .NET Framework 自带的序列化类库实现序列化和反序列化,主要包括以下几个类:

  • BinaryFormatter
  • SoapFormatter
  • XmlSerializer
  • DataContractSerializer
  • JavaScriptSerializer
  • JsonSerializer

接下来,就来详细介绍一下这三种序列化方法。

1. BinaryFormatter

BinaryFormatter 是将对象序列化为二进制格式,并存储为文件或传输。下面是一个示例代码。

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

[Serializable]
class Person
{
   public int age;
   public string name;
}

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person { age = 20, name = "张三" };
        BinaryFormatter formatter = new BinaryFormatter();
        using (FileStream fs = new FileStream("person.bin", FileMode.Create))
        {
            formatter.Serialize(fs, person);
        }
    }
}

在代码中,我们定义了一个 Person 类,然后创建了一个 Person 对象并设置了其属性,最后使用 BinaryFormatter 将其序列化为二进制格式并存储到文件中。

2. XmlSerializer

XmlSerializer 是将对象序列化为 XML 格式,并存储为文件或传输。下面是一个示例代码。

using System;
using System.IO;
using System.Xml.Serialization;

[Serializable]
class Person
{
   public int age;
   public string name;
}

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person { age = 20, name = "张三" };
        XmlSerializer serializer = new XmlSerializer(typeof(Person));
        using (FileStream fs = new FileStream("person.xml", FileMode.Create))
        {
            serializer.Serialize(fs, person);
        }
    }
}

在代码中,我们同样定义了一个 Person 类,然后创建了一个 Person 对象并设置了其属性,最后使用 XmlSerializer 将其序列化为 XML 格式并存储到文件中。

3. DataContractSerializer

DataContractSerializer 是一种用于序列化和反序列化对象的类,它将对象序列化为 XML 或 JSON 格式,并存储为文件或传输。下面是一个示例代码。

using System;
using System.IO;
using System.Runtime.Serialization;

[DataContract]
class Person
{
    [DataMember]
    public int age;
    [DataMember]
    public string name;
}

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person { age = 20, name = "张三" };
        DataContractSerializer serializer = new DataContractSerializer(typeof(Person));
        using (FileStream fs = new FileStream("person.xml", FileMode.Create))
        {
            serializer.WriteObject(fs, person);
        }
    }
}

在代码中,我们同样定义了一个 Person 类并在其中使用 DataContract 和 DataMember 注解定义了其字段的序列化属性,然后创建了一个 Person 对象并设置了其属性,最后使用 DataContractSerializer 将其序列化为 XML 格式并存储到文件中。

以上就是三种序列化方法的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 三种序列化方法分享 - Python技术站

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

相关文章

  • ASP.NET动态添加用户控件的方法

    ASP.NET是一种常见的Web应用程序框架。它允许开发者的动态添加用户控件到Web页面上。下面给出ASP.NET动态添加用户控件的方法和示例说明。 步骤1:创建用户控件 创建用户控件的一般步骤如下: 在Visual Studio中,右键单击项目,选择Add->New Item 在“添加新项”对话框中,选择“Web用户控件” 为用户控件命名,并保存 步…

    C# 2023年6月3日
    00
  • .Net 6简介并和之前版本写法做对比

    以下是“.Net 6简介并和之前版本写法做对比”的完整攻略。 什么是.Net 6? .Net 6是微软推出的一种跨平台开发框架,它可以用于构建Windows、Linux、macOS以及用于云的应用程序。与之前的版本相比,.Net 6具有更高的性能、更强的安全性以及更多的易用性。它还包括很多新的特性和改进,比如Web、Desktop和移动应用程序的改进,以及新…

    C# 2023年6月3日
    00
  • 鼠标右击事件代码(asp.net后台)

    鼠标右击事件是指用户在网页中使用鼠标右键时,触发的相关事件。在ASP.NET后台中,我们可以使用C#或VB.NET编写代码来处理鼠标右击事件。下面是一些详细的攻略和示例: 在页面中注册鼠标右击事件 我们可以通过JavaScript代码,在页面启动时注册鼠标右击事件,代码如下: <script type="text/javascript&quo…

    C# 2023年5月31日
    00
  • C# String.Join()方法: 连接一个数组中的元素,用指定的分隔符隔开

    String.Join()方法是C#中提供的一个字符串处理方法,可用于将一个一维数组中的元素通过指定的分隔符进行连接,并返回一个新的字符串。使用String.Join()方法可以很方便地将数组中的元素拼接到一起,以便进行后续操作,例如输出、存储等。 该方法的使用格式如下: string joinedString = String.Join(separator…

    C# 2023年4月19日
    00
  • 聊聊Unity 自定义日志保存的问题

    针对“聊聊Unity自定义日志保存的问题”,我可以提供以下完整攻略: 1. 了解Unity自带的日志系统 Unity自己的日志系统提供了五个级别的日志输出,分别是:Log、Warning、Error、Assert和Exception。日志输出的级别可以通过Debug.unityLogger.filterLogType属性来控制。我们可以通过在代码中使用Deb…

    C# 2023年5月15日
    00
  • 解析C#中的分部类和分部方法

    解析C#中的分部类和分部方法 在 C# 中,分部类(partial class)和分部方法(partial method)允许将一个类或方法的定义分为多个文件,这样可以更好地组织代码、使代码更易维护。本文将详细讲解如何使用分部类和分部方法。 分部类 定义 分部类指的是一个类的定义被分为多个部分,每个部分可以属于同一命名空间或不同命名空间,并且这些部分用 pa…

    C# 2023年6月7日
    00
  • 详解C#中一维数组的插入

    下面我将针对“详解C#中一维数组的插入”进行完整的介绍。 插入一维数组 在C#中插入一维数组,我们可以使用数组的 Array.Copy() 和 Array.Resize() 方法。下面分别介绍这两个方法的用法: 1.使用Array.Copy()方法 int[] arr = { 1, 2, 3, 4, 5 }; //初始数组 int[] arrNew = ne…

    C# 2023年6月7日
    00
  • ASP.net Core微信平台开发配置Token

    ASP.NET Core微信平台开发配置Token攻略 微信平台开发是一个非常流行的应用场景,许多企业和个人都在使用微信平台来开发自己的应用程序。在ASP.NET Core中,我们可以使用微信平台提供的API来实现微信平台开发。本攻略将介绍如何在ASP.NET Core中配置Token,以便我们可以使用微信平台API。 配置Token 在微信平台开发中,我们…

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