按引用传递和按值传递

本文关键字:按值传递 按引用传递 | 更新日期: 2023-09-27 18:11:34

这让我心烦意乱,我已经想了很久了。我在这里问了几个问题,但我还是不明白。我访问过乔恩·斯基特的主页等等。我试着写自己的代码,看看我是否理解这个概念,但对于下面的代码,当我试图打印出nums[0]时,它给了我500,它不应该打印出1,因为数组应该按值传递,因为"c#默认按值传递"?

UPDATE: 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 ?

按引用传递和按值传递

通过复制。

一个解决方案是像这样调用你的方法:
aThing(nums.ToArray()); // copy the array before passing it