gpt4 book ai didi

c# - 为什么要在 C# 中将 ref 用于数组参数?

转载 作者:太空狗 更新时间:2023-10-29 20:44:14 24 4
gpt4 key购买 nike

我阅读了页面 Passing Arrays Using ref and out (C# Programming Guide) 并且想知道为什么我们需要将数组参数定义为 ref 参数,因为它已经是引用类型。被调用函数的变化不会反射(reflect)到调用函数中吗?

最佳答案

Won't changes in the callee function be reflected in the caller function?

对数组内容 的更改将反射(reflect)在调用方方法中 - 但对参数本身 的更改则不会。例如:

public void Foo(int[] x)
{
// The effect of this line is visible to the caller
x[0] = 10;

// This line is pointless
x = new int[] { 20 };
}
...
int[] original = new int[10];
Foo(original);
Console.WriteLine(original[0]); // Prints 10

现在,如果我们将 Foo 更改为具有以下签名:

public void Foo(ref int[] x)

并将调用代码更改为:

Foo(ref original);

然后它会打印 20。

理解变量和它的值所指的对象之间的区别非常重要 - 修改对象和修改变量之间的区别也是如此。

查看我的 article on parameter passing in C#获取更多信息。

关于c# - 为什么要在 C# 中将 ref 用于数组参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19257079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com