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# winform组件 怎样集成

    在C# WinForms应用程序中集成组件通常涉及以下几个步骤: 添加引用: 首先,确保你已经安装了所需的组件。例如,如果你想要集成一个第三方库,你需要将该库的DLL...

  • c# winform组件 怎样提高效率

    要提高C# WinForms应用程序的效率,可以从多个方面入手,包括优化绘图过程、使用异步操作、合理设置控件属性等。以下是一些具体的优化策略:
    优化绘图过程 ...

  • c# winform组件 怎样自定义

    在C#中,要自定义WinForms组件,您需要创建一个继承自现有控件的新类,并重写其构造函数、事件处理程序和其他相关方法。以下是一个简单的示例,说明如何创建一个...

  • c# winform组件 怎样选择合适

    在C# WinForms应用程序开发中,选择合适的组件对于构建高效、用户友好的界面至关重要。以下是一些选择合适组件的建议:
    控件选择 根据需求选择:选择控件时...

  • 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部分,其中包含存储在...