117.info
人生若只如初见

怎么使用c#进行数据序列化

在C#中进行数据序列化有多种方法,其中最常用的是使用BinaryFormatterXmlSerializerDataContractSerializer。下面分别介绍这三种方法的使用方式:

  1. 使用BinaryFormatter进行数据序列化与反序列化:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class MyClass
{
    public int Number { get; set; }
    public string Text { get; set; }
}

public static void Main()
{
    MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };

    // 序列化
    BinaryFormatter formatter = new BinaryFormatter();
    using (FileStream fileStream = new FileStream("data.bin", FileMode.Create))
    {
        formatter.Serialize(fileStream, obj);
    }

    // 反序列化
    using (FileStream fileStream = new FileStream("data.bin", FileMode.Open))
    {
        MyClass deserializedObj = (MyClass)formatter.Deserialize(fileStream);
        Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
    }
}
  1. 使用XmlSerializer进行数据序列化与反序列化:
using System;
using System.IO;
using System.Xml.Serialization;

[Serializable]
public class MyClass
{
    public int Number { get; set; }
    public string Text { get; set; }
}

public static void Main()
{
    MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };

    // 序列化
    XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
    using (FileStream fileStream = new FileStream("data.xml", FileMode.Create))
    {
        serializer.Serialize(fileStream, obj);
    }

    // 反序列化
    using (FileStream fileStream = new FileStream("data.xml", FileMode.Open))
    {
        MyClass deserializedObj = (MyClass)serializer.Deserialize(fileStream);
        Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
    }
}
  1. 使用DataContractSerializer进行数据序列化与反序列化:
using System;
using System.IO;
using System.Runtime.Serialization;

[DataContract]
public class MyClass
{
    [DataMember]
    public int Number { get; set; }

    [DataMember]
    public string Text { get; set; }
}

public static void Main()
{
    MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };

    // 序列化
    DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));
    using (FileStream fileStream = new FileStream("data.xml", FileMode.Create))
    {
        serializer.WriteObject(fileStream, obj);
    }

    // 反序列化
    using (FileStream fileStream = new FileStream("data.xml", FileMode.Open))
    {
        MyClass deserializedObj = (MyClass)serializer.ReadObject(fileStream);
        Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
    }
}

以上是三种常用的C#数据序列化方法,根据实际需求选择合适的方法即可。

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

推荐文章

  • C++中的splice()函数怎么调用

    在C++中,splice()函数是std::list容器的成员函数,用于将一个列表插入到另一个列表的指定位置。splice()函数有两种形式的调用方式:1. 将一个列表的所有元素插入...

  • C++中include iostream是什么

    在C++中,#include 是一个预处理指令,用于引入标准输入输出库(iostream库)的头文件。它允许程序使用输入输出流(如cin和cout)来进行输入输出操作。通过包含该...

  • c++修改文件(夹)的用户访问权限程序代码

    以下是一个示例代码,用于修改文件或文件夹的用户访问权限:
    #include #include int main() { std::string path = "/path/to/file_or_folder"; int permiss...

  • c++ 输入文件流ifstream用法详解

    ifstream是C++标准库中的一个输入文件流类,用于从文件中读取数据。
    使用ifstream类需要包含头文件。
    ifstream类的对象可以用来打开一个文件,并从该文...

  • Java自旋锁的底层实现原理是什么

    Java自旋锁的底层实现原理是在多线程竞争共享资源时,线程不会立即阻塞,而是采用循环的方式不断尝试获取锁,直到成功获取锁为止。这种方式可以减少线程调度的开...

  • c#定义数组并赋值的方法是什么

    在C#中,定义数组并赋值的方法有以下几种: 使用数组初始化器: // 定义并赋值一个整数数组
    int[] numbers = { 1, 2, 3, 4, 5 }; // 定义并赋值一个字符串数...

  • Python虚拟机中描述器怎么实现

    在Python虚拟机中,描述器(Descriptor)是一种特殊的对象,它可以在类的属性访问过程中定义和控制对属性的访问。
    要实现一个描述器,需要定义一个类,并在...

  • php中jwt刷新token的方法是什么

    在PHP中,可以使用以下步骤来刷新JWT(JSON Web Token)的方法: 验证当前的JWT是否有效,即JWT是否已过期或无效。
    提取JWT中的payload部分,其中包含存储在...