[英]will a c# function returning an array create a new copy of the array?
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;
}
}
我想知道這是否會創建味精的副本?
這個想法是返回流的n個字節,並將其余的字節保存下來,以供下一次對func的調用。
不,它返回對數組的引用的副本,分配的內存(在這種情況下為堆)不會以任何方式復制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.