【发布时间】:2016-03-03 04:39:52
【问题描述】:
我对此有点困惑。
private void button1_Click(object sender, EventArgs e)
{
int i = 1;
int[] p=new int[4];
p[0] = 25;
method(p);
string o = p[0].ToString();
}
private void method(int[] k)
{
k[0] = 34;
k = null; //##
}
场景1:如果我删除k=null,那么我的p[0] 变成34,它在“方法”函数中被修改。数组是引用类型,所以没什么好奇怪的。
场景 2:使用k=null,我的p[0] 仍然返回34 而不是null。为什么会这样?在这里,我将整个数组设置为空,但第一个元素如何携带34?
【问题讨论】:
-
您不是通过引用传递。这需要
ref关键字。如果你使用赋值运算符(=),它不会影响调用范围内的变量,除非你通过引用传递。但是,如果您更改常规参数的 properties 和 state,那确实会更改调用范围内的变量。