C#怎么把序列化类反序列化输出到控制台
时间: 2024-09-15 08:08:30 浏览: 5
在C#中,你可以使用`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`或者`System.Text.Json`库来进行序列化和反序列化的操作。这里我们以`BinaryFormatter`为例说明如何将序列化类反序列化到控制台:
```csharp
using System;
using System.IO;
// 假设有一个需要序列化的类
public class MyClass
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string[] args)
{
// 创建一个MyClass实例
MyClass myObject = new MyClass() { Name = "John", Age = 30 };
// 序列化
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, myObject);
stream.Seek(0, SeekOrigin.Begin); // 重置流位置以便读取
// 将序列化后的数据写入控制台
Console.WriteLine("Serialized data:");
byte[] bytes = new byte[stream.Length];
stream.Read(bytes, 0, Convert.ToInt32(stream.Length));
Console.Write(BitConverter.ToString(bytes));
}
// 反序列化回MyClass实例
if (File.Exists("myobject.bin")) // 假设存在一个二进制文件作为输入源
{
using (FileStream fileStream = File.OpenRead("myobject.bin"))
{
MyClass deserializedObject = (MyClass)formatter.Deserialize(fileStream);
Console.WriteLine("\nDeserialized object:");
Console.WriteLine($"Name: {deserializedObject.Name}, Age: {deserializedObject.Age}");
}
}
}
}
```
在这个示例中,首先序列化了`MyClass`对象,然后将其内容写入内存流或文件。接下来,可以读取并显示序列化后的字节,或者从文件中读取并反序列化回原始对象。