首页 > 解决方案 > 如果应该存储原始二进制数据,我应该使用什么类型的属性

问题描述

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

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

  1. byte[]

    这会生成警告 CA1819

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

  2. MemoryStream

    MemoryStream因此IDisposable所有者将负责处理它,但引用MemoryStream可能比所有者寿命更长。一个选项只是不处理流,因为它不需要它。
    AMemoryStream也不是线程安全的,应注意流位置。消费者当然可以使用GetBuffer,但这并不比选项 1 更安全。

更新

  1. ReadOnlyList<byte>

    我担心性能。这种二进制数据通常需要使用 传递到外部代码中byte[],从而byte[]ReadOnlyList<byte>性能产生影响。

标签: c#.netidisposable

解决方案


推荐阅读