legongju.com
我们一直在努力
2025-01-09 21:47 | 星期四

C#字典的序列化与反序列化

在C#中,可以使用System.Runtime.Serialization命名空间中的DataContractSerializer类来实现字典的序列化和反序列化

首先,需要添加System.Runtime.Serialization的引用。

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个字典对象
        Dictionary dictionary = new Dictionary
        {
            {"apple", 1},
            {"banana", 2},
            {"orange", 3}
        };

        // 序列化字典
        string serializedDictionary = SerializeDictionary(dictionary);
        Console.WriteLine("Serialized dictionary: " + serializedDictionary);

        // 反序列化字典
        Dictionary deserializedDictionary = DeserializeDictionary(serializedDictionary);
        Console.WriteLine("Deserialized dictionary:");
        foreach (KeyValuePair entry in deserializedDictionary)
        {
            Console.WriteLine($"Key: {entry.Key}, Value: {entry.Value}");
        }
    }

    public static string SerializeDictionary(Dictionary dictionary)
    {
        using (MemoryStream memoryStream = new MemoryStream())
        {
            DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary));
            serializer.WriteObject(memoryStream, dictionary);
            memoryStream.Position = 0;
            using (StreamReader reader = new StreamReader(memoryStream))
            {
                return reader.ReadToEnd();
            }
        }
    }

    public static Dictionary DeserializeDictionary(string serializedDictionary)
    {
        using (MemoryStream memoryStream = new MemoryStream())
        {
            using (StreamWriter writer = new StreamWriter(memoryStream))
            {
                writer.Write(serializedDictionary);
                writer.Flush();
                memoryStream.Position = 0;
                DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary));
                return (Dictionary)serializer.ReadObject(memoryStream);
            }
        }
    }
}

这个示例中,我们创建了一个包含水果名称和数量的字典。然后,我们使用SerializeDictionary方法将字典序列化为字符串,并使用DeserializeDictionary方法将字符串反序列化为字典。最后,我们打印出序列化和反序列化后的字典。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/93080.html

相关推荐

  • 如何在C#项目中引入Lombok

    如何在C#项目中引入Lombok

    在C#项目中,我们不能直接使用Lombok,因为Lombok是Java项目的一个库,它可以帮助我们简化Java代码。但是,在C#中,我们有一些类似的库和方法可以帮助我们简化代...

  • Lombok在C#开发中的优势是什么

    Lombok在C#开发中的优势是什么

    Lombok是一个Java库,它通过注解自动生成Java代码,减少了开发人员的重复性工作。然而,Lombok并不是为C#设计的,因此Lombok在C#开发中并不具优势。以下是关于Lo...

  • C#中Lombok如何简化代码

    C#中Lombok如何简化代码

    在C#中,没有直接与Java的Lombok库相对应的库。Lombok是一个Java库,能够通过注解方式减少Java代码中的样板代码(例如getter、setter、toString等方法)。
    ...

  • C#中使用Lombok的安全性如何

    C#中使用Lombok的安全性如何

    Lombok是一个专门为Java设计的库,它通过注解的方式帮助开发者减少模板代码的编写,提高开发效率。然而,C#语言中并没有Lombok这样的库,因此Lombok不能直接在C#...

  • 在C#中如何合并两个字典

    在C#中如何合并两个字典

    在C#中,可以使用Concat方法和ToDictionary方法来合并两个字典
    using System;
    using System.Collections.Generic;
    using System.Linq; class Pro...

  • C#字典的异常处理方法

    C#字典的异常处理方法

    在C#中,使用字典(Dictionary)时可能会遇到一些异常,例如键(Key)不存在或键值对(KeyValuePair)已存在等。为了确保代码的健壮性,我们需要对这些异常进行处...

  • C#字典的容量管理策略

    C#字典的容量管理策略

    C# 中的 Dictionary 类是一个泛型集合,它提供了键值对的存储和访问功能 初始容量:当你创建一个新的 Dictionary 时,可以选择指定其初始容量。如果不指定,则默...

  • 如何遍历C#中的字典

    如何遍历C#中的字典

    在C#中,可以使用foreach循环来遍历字典(Dictionary)
    using System;
    using System.Collections.Generic; class Program
    { static void Main() ...