温馨提示×

c# struct怎样进行序列化

c#
小樊
143
2024-11-26 14:08:23
栏目: 编程语言

在C#中,要对结构体(struct)进行序列化,可以使用System.Runtime.Serialization命名空间中的BinaryFormatter类。以下是一个简单的示例:

首先,创建一个结构体:

using System; namespace SerializationExample { [Serializable] public struct Person { public string Name; public int Age; public string Address; } } 

注意,我们在结构体上添加了[Serializable]属性,这是进行序列化的必要条件。

接下来,创建一个序列化方法和一个反序列化方法:

using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; namespace SerializationExample { public class SerializationHelper { public static byte[] Serialize(Person person) { using (MemoryStream memoryStream = new MemoryStream()) { BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(memoryStream, person); return memoryStream.ToArray(); } } public static Person Deserialize(byte[] bytes) { using (MemoryStream memoryStream = new MemoryStream(bytes)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); return (Person)binaryFormatter.Deserialize(memoryStream); } } } } 

现在,你可以使用SerializationHelper类中的SerializeDeserialize方法对Person结构体进行序列化和反序列化:

namespace SerializationExample { class Program { static void Main(string[] args) { Person person = new Person { Name = "John Doe", Age = 30, Address = "123 Main St" }; // 序列化 byte[] serializedBytes = SerializationHelper.Serialize(person); Console.WriteLine("Serialized bytes:"); foreach (byte b in serializedBytes) { Console.Write(b + " "); } Console.WriteLine(); // 反序列化 Person deserializedPerson = SerializationHelper.Deserialize(serializedBytes); Console.WriteLine("\nDeserialized person:"); Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}, Address: {deserializedPerson.Address}"); } } } 

这个示例将输出序列化后的字节数组和反序列化后的Person结构体。

0