legongju.com
我们一直在努力
2024-12-23 18:24 | 星期一

c# struct怎样进行序列化

在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结构体。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/56041.html

相关推荐

  • c++ assert函数在多线程行吗

    c++ assert函数在多线程行吗

    assert 函数本身是线程安全的,因为它在运行时检查条件是否为真。然而,在多线程环境中使用 assert 时,需要注意以下几点: assert 函数依赖于程序的运行时环境。...

  • c++ assert函数能处理异常吗

    c++ assert函数能处理异常吗

    C++ 的 assert 函数主要用于在调试模式下检查程序中的条件是否为真。如果条件为假,assert 会终止程序并显示一条错误消息。然而,assert 并不是用来处理异常的。...

  • c++ assert函数如何调试代码

    c++ assert函数如何调试代码

    assert() 是 C++ 中的一个调试工具,它在运行时检查给定的条件是否为真。如果条件为假,程序会终止并显示一条错误消息。这对于在开发过程中发现潜在问题非常有用...

  • c++ assert函数作用是什么

    c++ assert函数作用是什么

    assert是C++中的一个宏定义,用于在程序运行时进行调试检查。如果assert后面的条件表达式为假(即0),则程序会终止执行,并输出一条错误信息,通常包含文件名和...

  • c# struct常见错误有哪些

    c# struct常见错误有哪些

    在C#中,struct(结构体)是一种用户自定义的数据类型,它表示一个固定大小的值类型。尽管结构体在某些情况下非常有用,但它们也有一些常见的错误和陷阱。以下是...

  • c# struct与枚举有何关联

    c# struct与枚举有何关联

    C# 中的结构(struct)和枚举(enum)都是用于定义数据类型的数据结构,但它们之间存在一些关键区别和关联。
    关联: 都是值类型:结构(struct)和枚举(en...

  • c# struct值类型特性是啥

    c# struct值类型特性是啥

    C# 中的结构(struct)是一种值类型,它具有以下特性: 值类型:结构是值类型,这意味着当将结构赋值给另一个变量时,会创建一个新的副本。这与引用类型(如类)...

  • c# struct性能怎样优化

    c# struct性能怎样优化

    在C#中,结构体(struct)是一种值类型,它们通常用于表示具有固定大小的数据。尽管结构体在某些情况下非常有用,但它们的性能可能不如类(class)。以下是一些建...