c# - 如果应该存储原始二进制数据,我应该使用什么类型的属性
问题描述
我需要在我的类上存储/公开原始二进制数据(二进制文件的内容)。我应该使用哪种类型?
到目前为止我考虑过的选项:
byte[]
这会生成警告 CA1819:
属性返回的数组不受写保护,即使该属性是只读的。为了保持数组防篡改,该属性必须返回数组的副本。通常,用户不会理解调用此类属性对性能的不利影响。具体来说,他们可能将该属性用作索引属性。
MemoryStream
MemoryStream
因此IDisposable
所有者将负责处理它,但引用MemoryStream
可能比所有者寿命更长。一个选项只是不处理流,因为它不需要它。
AMemoryStream
也不是线程安全的,应注意流位置。消费者当然可以使用GetBuffer
,但这并不比选项 1 更安全。
更新
ReadOnlyList<byte>
我担心性能。这种二进制数据通常需要使用 传递到外部代码中
byte[]
,从而byte[]
对ReadOnlyList<byte>
性能产生影响。
解决方案
推荐阅读
- vue.js - Vue test-utils 的问题 - TypeError: (0 , _testUtils.enableAutoDestroy) 不是函数
- selenium - 为内联代码获取 NullPointerException。我已经在全球范围内定义了 WebDriver,调用浏览器方法工作正常我在这里做错了什么
- git - gitlab合并请求分支有什么用?
- vue.js - Vue 阻止默认路由器链接行为在 Chrome 中有效,但在 Firefox 中无效
- vba - 将范围的值与数组匹配,如果不匹配,则通过输入框 Macro VBA 替换它
- dataframe - 将月度索引拆分为列上的部分
- c# - IText7 在 MVC 上设置外部样式表没有得到
- ruby - ruby 通过空字段的 ldap 搜索引发异常
- mysql - 带有条件 IF 语句的 TRIGGER
- laravel - Laravel 目标类 [App\Http\Controllers\HomeController] 不存在