【问题标题】:Does MemoryStream Copy on construction?MemoryStream 是否在施工时复制?
【发布时间】:2018-09-24 23:27:09
【问题描述】:

当你从一个字节数组构造一个 MemoryStream 时,流是否会创建自己的副本?如果与直接从原始数组中读取字节相比,这是否是高性能场景中的性能问题?

【问题讨论】:

  • 源码应该是第一个找的地方:referencesource.microsoft.com/#mscorlib/system/io/…
  • @CamiloTerevinto 不是。参考源代码现在告诉您实现细节,而不是 contract。 .NET 版本之间的实现细节可以(并且确实)改变。
  • @Luaan 当然是。你至少需要有一个想法。合同也可以改,所以没看明白
  • @CamiloTerevinto 我并不是说它不是一个有用的工具。我只是说它不应该是您的第一个停靠港,也不应该被视为合同的一部分。如果您认为实现细节比合同更可靠,那很好。

标签: c#


【解决方案1】:

文档中似乎没有明确提及,但请记住,您可以使用MemoryStream 修改现有的byte[]。如果复制字节数组,那将没有任何意义。

参考 .NET 参考源,没有对字节数组进行复制。

【讨论】:

    【解决方案2】:

    从经验我可以说,它不会复制数组。 但请注意,当在构造函数中使用数组时,您无法调整内存流的大小

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 2015-04-26
      相关资源
      最近更新 更多