二进制序列化,IFormatter:每次使用一个新的或在一个字段中存储一个

本文关键字:一个 字段 存储 序列化 IFormatter 二进制 | 更新日期: 2023-09-27 18:13:35

在。net c#中首次使用二进制格式

来自MSDN的代码如下:

 IFormatter formatter = new BinaryFormatter();
 Stream stream = new FileStream("MyFile.lvl", FileMode.Create, FileAccess.Write,FileShare.None);
 formatter.Serialize(stream, Globals.CurrentLevel);
 stream.Close();

只是想知道我是否应该将IFormatter存储在我的类中的一个字段中并一遍又一遍地使用它,或者我应该像上面那样做并实例化一个新的,每次我保存/加载一些东西?

我注意到它不是IDisposable

二进制序列化,IFormatter:每次使用一个新的或在一个字段中存储一个

重建BinaryFormatter的开销很小,它在构造函数中设置的大多数属性都是enum s,参见这里(感谢Reflector):

public BinaryFormatter()
{
    this.m_typeFormat = FormatterTypeStyle.TypesAlways;
    this.m_securityLevel = TypeFilterLevel.Full;
    this.m_surrogates = null;
    this.m_context = new StreamingContext(StreamingContextStates.All);
}

如果你打算重用它,你需要同步访问SerializeDeserialize方法,以保持它们的线程安全。