gpt4 book ai didi

.net - MemoryStream.TryGetBuffer 什么时候会返回有用的 ArraySegment?

转载 作者:行者123 更新时间:2023-12-01 23:24:19 31 4
gpt4 key购买 nike

bool MemoryStream.TryGetBuffer(out ArraySegment<byte> buffer) 是 .NET 4.6 中的一个新 API,可用于访问存储在 MemoryStream 中的有效字节,而无需复制它们。这非常令人兴奋!它返回一个 bool 值,“如果转换成功,则为 true;否则为 false”,并填充输出参数。

什么时候返回true,表示out ArraySegment<byte> buffer现在包含有效信息?今天还没有记录这一点。

我知道如果它返回 false,我可以使用 .ToArray() 获取字节的副本。而且,我们有 .GetBuffer() ,但有时创建 MemoryStream 时会带有缓冲区的偏移量,此信息为 hard (well, sort of) to get later on ,更不用说 try ... catch需要稳健性。

最佳答案

为了使 TryGetBuffer 执行成功转换并使用有用信息填充输出参数,缓冲区必须可见。如果使用以下任何构造函数,则缓冲区可见:

  • MemoryStream()
  • MemoryStream(int 容量)
  • MemoryStream(byte[] buffer, int index, int count, bool writable, bool publicVisible)publiclyVisible: true

检查source code了解更多详情。

关于.net - MemoryStream.TryGetBuffer 什么时候会返回有用的 ArraySegment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30808289/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com