【发布时间】:2018-01-05 00:31:32
【问题描述】:
我有一个 C# 代码如下:
int[] A = new int[] {1, 2, 3};
fun(A);
// A at this point still says 1, 2, 3.
void fun(int[] A)
{
int[] B = new int[] {4, 5, 6};
A = B;
}
我认为所有数组都是在 C# 中通过引用传递的。 A调用fun()后不应该反映4、5、6吗?
【问题讨论】:
-
您必须修改对 A 的原始引用,您永远不会这样做。见the docs
-
数组的元素是通过引用传递的,而不是数组本身。见:stackoverflow.com/questions/967402/…
-
做例子的时候不要在多个地方使用同一个名字,这样就很难讲你的例子了,传入函数的参数名和变量名应该有有两个不同的名称,以使示例更易于讨论。
-
@ArchieGertsman 不,元素不是通过引用传递的。只有一个变量被传递,它被传递按值,但该值是一个引用。数组值被引用,但它们根本没有通过引用或其他方式“传递”。
-
@Servy 我的错误。但该链接仍然有效。