110,535
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
class Program
{
// 在Dotnet Framework 4.0下编译运行
static void Main(string[] args)
{
My my1 = new My(); // 会调用构造函数,并输出'My constructed! Id=123'
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, my1);
ms.Position = 0;
My my2 = (My)bf.Deserialize(ms); // 不会调用构造函数
my2.Id = 888;
Console.WriteLine("my1.Id={0}; my2.Id={1}", my1.Id, my2.Id);
ms.Dispose();
Console.WriteLine("另外一种方法");
Console.ReadLine();
My my3 = (My)FormatterServices.GetUninitializedObject(typeof(My)); // 不会调用构造函数,但已经分配所需空间
Console.WriteLine("my3.Id={0}; ", my3.Id); // my3.Id=0
}
}
[Serializable]
class My
{
public My()
{
Id = 123;
Console.WriteLine("My constructed! Id=" + Id);
}
public int Id { get; set; }
}