按引用传递和按值传递
本文关键字:按值传递 按引用传递 | 更新日期: 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