通过引用传递并通过值C#传递

时间:2014-07-06 15:15:27

标签: c# pass-by-reference pass-by-value

这让我大吃一惊,我一直想把它包裹好几年。我在这里经历了几个问题,但我仍然没有得到它。我已经访问了Jon Skeet的页面等等。我尝试编写自己的代码,看看我是否理解了这个概念,但是当我尝试打印出nums [0]下面的代码时,它给了我500,不应该打印出来1因为数组应该按值传递,因为“C#默认按值传递”?

更新:aThing只是随机改变一个索引,看看r中的变化是否反映在nums中

static void Main(string[] args)
    {
        int[] nums = new int[] { 1, 2, 3, 4 };

        aThing(nums);

        Console.WriteLine(nums[0]);
        Console.ReadLine();
    }

    static void aThing(int[] r)
    {
        r[0] = 500;
        r = null;
    }

为了感兴趣,我如何在不修改麻木的情况下修改r?

1 个答案:

答案 0 :(得分:0)

复制它。

解决方案是像这样调用你的方法:

aThing(nums.ToArray()); // copy the array before passing it