class comm
{
public Socket sock;
public byte[] buf;
public int pos;
public comm()
{
buf = new byte[4000];
pos = 0;
}
public byte[] func(int n)
{
byte[] msg;
msg = new byte[4000];
for(int i = 0; i < n; ++i)
{
if(pos >= buf.length)
{
sock.Receive(buf, 0, 4000, 0);
pos = 0;
}
msg[i] = buf[pos++];
}
Array.Resize(ref msg, n);
return msg;
}
}
我想知道这是否会创建一个msg的副本?
这个想法是返回流的n个字节并保存其余部分以便下次调用func。
答案 0 :(得分:6)
不,它将引用的副本返回到数组,分配的内存(在本例中为Heap)不会以任何方式复制。