簡體   English   中英

ac#函數返回數組會創建該數組的新副本嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM