【发布时间】:2021-11-16 11:05:07
【问题描述】:
这个循环是如何工作的,我得到了 11、2、13、4、15 的结果? 我的意思是解释一个数字是如何进入for循环的以及会发生什么
static void Main(string[] args)
{
int[] arr = new int[] { 1, 2, 3, 4, 5 };
fun1(ref arr);
Console.ReadLine();
}
static void fun1 (ref int[] array)
{
for (int i = 0; i < array.Length; i = i + 2)
{
array[i] = array[i] + 10;
}
Console.WriteLine(string.Join(",", array));
}
}
【问题讨论】:
-
使用单步调试器,单步执行代码并检查变量,这与
ref无关,无论如何数组都是通过引用传递的,您所做的只是传递对引用的引用,在这种情况下,它什么也没做 -
ref在这里毫无意义,因为您没有为array分配新值。 -
"数组是通过引用传递的" - 这是不准确的。默认情况下,对数组的引用是按值传递的。这听起来像是毫无意义的语义,但通过引用传递允许重新分配函数内的参数,以修改在调用函数时分配给传入的变量的内容。
-
@moreON 你明白了,我应该说数组是引用类型,引用是按值传递的,在这种情况下,你只是通过引用传递一个引用。虽然我的说法仍然坚定