当前位置:  开发笔记 > 编程语言 > 正文

通过引用传递的数组的修改

如何解决《通过引用传递的数组的修改》经验,为你挑选了1个好方法。

我最近遇到了一些第三方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引用以指向新分配的数组吗?如果是这样,该阵列是否可以保留?



1> Paul Kapusti..:

是的,因为ref - 它确实修改了传递的引用.停在附近?你的意思是 - 没有被破坏?是的,由于新的参考,它不会是GC'd.如果没有更多的引用,旧的数组(传递)可能是GC'd但是在这个赋值后...

Array.Copy实际上会复制元素,然后你不需要"ref",但这会更耗时

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有