117.info
人生若只如初见

C#类的序列化与反序列化

在 C# 中,可以使用序列化和反序列化来将对象转换为字节流或将字节流转换为对象。这些操作可以帮助我们在不同系统之间传输对象或将对象保存到文件中。

以下是一个简单的示例,展示如何在 C# 中进行类的序列化和反序列化:

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "Alice", Age = 30 };

        // 序列化对象
        IFormatter formatter = new BinaryFormatter();
        using (Stream stream = new FileStream("person.dat", FileMode.Create, FileAccess.Write, FileShare.None))
        {
            formatter.Serialize(stream, person);
        }

        // 反序列化对象
        using (Stream stream = new FileStream("person.dat", FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            Person deserializedPerson = (Person)formatter.Deserialize(stream);
            Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
        }
    }
}

在上面的示例中,我们定义了一个 Person 类,并对其进行了序列化和反序列化操作。序列化使用 BinaryFormatter 类,将 Person 对象保存到文件中。反序列化则是通过将文件中的字节流转换回 Person 对象。

需要注意的是,要使一个类可以序列化,需要在类的定义上加上 [Serializable] 特性。除了使用 BinaryFormatter 进行序列化和反序列化外,还可以使用其他序列化方式,如 XML 序列化、JSON 序列化等。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe05fAzsIAQVTAF0.html

推荐文章

  • C#中sizeof的限制和约束

    在C#中,sizeof操作符用于获取指定类型的大小(以字节为单位),但是存在一些限制和约束: sizeof操作符只能用于值类型,例如基本数据类型(int、float、double等...

  • C# sizeof和Marshal.SizeOf的区别

    在C#中,sizeof操作符用于获取值类型数据的字节大小,而Marshal.SizeOf方法用于获取结构体的字节大小,包括非托管资源。
    sizeof操作符只能用于值类型的数据...

  • C# sizeof是否可以应用于类

    在C#中,sizeof操作符可以应用于值类型,比如基本数据类型或者结构体,但不能应用于引用类型,比如类。因为引用类型的大小是在运行时才确定的,所以无法在编译时...

  • C#中sizeof对于数组的应用

    在C#中,sizeof操作符可以用于获取数组的长度,但是需要注意的是,sizeof操作符只能用于获取值类型的大小,而不能用于获取引用类型的大小。因此,对于数组来说,...

  • C#中类的初始化与清理

    在C#中,类的初始化和清理是通过构造函数和析构函数来实现的。 初始化:类的初始化是通过构造函数来实现的。构造函数在类实例化时被调用,用来初始化类的成员变量...

  • C#类的成员可见性与访问控制

    C#中的类成员可以使用访问修饰符来控制其可见性和访问控制。以下是C#中常用的访问修饰符: public:公共访问修饰符,表示该成员可以在类的内部和外部访问。 priv...

  • C#类的嵌套类型与命名空间

    在C#中,可以在一个类中定义其他类,这种类叫做嵌套类型。嵌套类型可以访问外部类的私有成员,并且可以被外部类访问。嵌套类型可以提高代码的模块化和可维护性。...

  • C#中图标的动画与过渡效果

    在C#中,可以使用WPF(Windows Presentation Foundation)来创建图标的动画与过渡效果。以下是一些常用的方法: 使用VisualStateManager:VisualStateManager是W...