溫馨提示×

c# struct怎樣進行序列化

c#
小樊
138
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
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女