将c#函数返回一个数组创建一个新的数组副本吗?

时间:2017-04-24 20:10:03

标签: c#

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。

1 个答案:

答案 0 :(得分:6)

不,它将引用的副本返回到数组,分配的内存(在本例中为Heap)不会以任何方式复制。