在 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 中的元素是自定義類型,需要確保該類型是可序列化的。