如果应该存储原始二进制数据,我应该使用哪种类型的属性

时间:2019-04-06 09:34:30

标签: c# .net idisposable

我需要在类中存储/公开原始二进制数据(二进制文件的内容)。我应该使用哪种类型?

到目前为止我考虑过的选项:

  1. byte[]

    这会生成warning CA1819

      

    即使属性是只读的,属性返回的数组也不受写保护。为了使数组不被篡改,该属性必须返回数组的副本。通常,用户不会理解调用此类属性对性能的负面影响。具体来说,他们可能会将该属性用作索引属性。

  2. MemoryStream

    MemoryStreamIDisposable,因此所有者将负责处置它,但是对MemoryStream的引用可能会超过所有者。一种选择就是根本不需要处置该流,因为它不需要它。
    MemoryStream也不是线程安全的,应注意流的位置。消费者当然可以使用GetBuffer,但这并不比选项1安全得多。

更新

  1. ReadOnlyList<byte>

    我担心表现。通常需要使用byte[]将此二进制数据传递到外部代码中,以使byte[]中的ReadOnlyList<byte>具有性能影响。

0 个答案:

没有答案