阅读量:0
在 C# 中,可以使用以下方法来序列化和反序列化 LinkedListNode:
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Collections.Generic; class Program { static void Main() { // 创建一个 LinkedList LinkedList<int> linkedList = new LinkedList<int>(); linkedList.AddLast(1); linkedList.AddLast(2); linkedList.AddLast(3); // 将 LinkedListNode 序列化为字节数组 byte[] serializedData = SerializeLinkedList(linkedList.First); // 将字节数组反序列化为 LinkedListNode LinkedListNode<int> deserializedNode = DeserializeLinkedList(serializedData); Console.WriteLine("Deserialized LinkedListNode value: " + deserializedNode.Value); } static byte[] SerializeLinkedList(LinkedListNode<int> node) { BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream stream = new MemoryStream()) { formatter.Serialize(stream, node); return stream.ToArray(); } } static LinkedListNode<int> DeserializeLinkedList(byte[] data) { BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream stream = new MemoryStream(data)) { return (LinkedListNode<int>)formatter.Deserialize(stream); } } }
在上面的示例中,首先创建了一个包含整数的 LinkedList,然后使用 SerializeLinkedList 方法将 LinkedList 的第一个节点序列化为字节数组。接着使用 DeserializeLinkedList 方法将字节数组反序列化为 LinkedListNode,并打印出反序列化后的节点的值。
需要注意的是,这里使用的是 BinaryFormatter 来进行序列化和反序列化操作,因此需要引入 System.Runtime.Serialization.Formatters.Binary 命名空间。另外,如果 LinkedList 中的元素是自定义类型,需要确保该类型是可序列化的。