
AI
在.NET中,我们可以使用Dictionary类来实现键/值对的存储和访问。这个类是.NET Framework中的一个通用泛型类,可以存储任意类型的键和值。然而,Dictionary类本身并不支持序列化,因此无法直接将其存储到磁盘或在网络上传输。
SerializableDictionary类,它是一个可序列化的通用键/值对类。这个类继承自Dictionary,并实现了ISerializable接口。通过实现ISerializable接口,我们可以自定义键/值对类的序列化和反序列化过程。下面是一个示例代码,演示了如何使用SerializableDictionary类:csharpusing System;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;[Serializable]public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, ISerializable{ public SerializableDictionary() { } protected SerializableDictionary(SerializationInfo info, StreamingContext context) : base(info, context) { } public void GetObjectData(SerializationInfo info, StreamingContext context) { foreach (var pAIr in this) { info.AddValue(pAIr.Key.ToString(), pAIr.Value); } }}public class Program{ public static void MAIn(string[] args) { SerializableDictionary<string, int> dictionary = new SerializableDictionary<string, int>(); dictionary.Add("Apple", 1); dictionary.Add("Banana", 2); dictionary.Add("Orange", 3); // 序列化字典到磁盘 IFormatter formatter = new BinaryFormatter(); using (Stream stream = new FileStream("dictionary.bin", FileMode.Create, FileAccess.Write)) { formatter.Serialize(stream, dictionary); } // 从磁盘反序列化字典 SerializableDictionary<string, int> deserializedDictionary; using (Stream stream = new FileStream("dictionary.bin", FileMode.Open, FileAccess.Read)) { deserializedDictionary = (SerializableDictionary<string, int>)formatter.Deserialize(stream); } // 输出反序列化后的字典内容 foreach (var pAIr in deserializedDictionary) { Console.WriteLine($"Key: {pAIr.Key}, Value: {pAIr.Value}"); } }}使用SerializableDictionarySerializableDictionary,它继承自Dictionary并实现了ISerializable接口。在GetObjectData方法中,我们使用SerializationInfo类的AddValue方法将字典中的键和值添加到序列化信息中。在MAIn方法中,我们创建了一个SerializableDictionary对象,并向其中添加了一些键/值对。然后,我们使用BinaryFormatter类将字典序列化到磁盘文件dictionary.bin中。接着,我们使用相同的BinaryFormatter对象从磁盘文件中反序列化字典,并输出反序列化后的键/值对。通过这种方式,我们可以方便地将SerializableDictionary类的实例序列化到磁盘或在网络上传输,从而实现键/值对的持久化和跨应用程序的传递。Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号