6

在 .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

4

1 回答 1

7

重新创建 a 的开销很小BinaryFormatter,它在构造函数中设置的大多数属性都是enums,请参见此处(感谢 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方法的访问以保持它们的线程安全。

于 2013-05-14T14:03:39.693 回答