【发布时间】:2010-09-23 02:51:04
【问题描述】:
我最近遇到了一些执行以下操作的第 3 方 C# 代码:
public int RecvByteDataFromPrinter(ref byte[] byteData)
{
byte[] recvdata = new byte[1024];
///...fills recvdata array...
byteData = recvdata;
return SUCCESS;
}
在这种情况下,“byteData = recvdata”行实际上做了什么?
看来目标是让 byteData 包含 recvdata 数组的内容。但是,我的印象是您需要执行Array.Copy(...) 操作才能实现这一点。
这实际上是在修改 byteData 引用以指向新分配的数组吗?如果是这样,该数组是否可以保证保留?
【问题讨论】:
-
附带说明.. 您提到了 Array.Copy,在大多数情况下这很好,但是当您处理字节数组并且想要避免自动装箱和拆箱的开销时,您应该考虑Buffer.BlockCopy .. 不是真正的主题,但仅供参考