protected void Page_Load(object sender, EventArgs e)
{
string[] strArr = { "111", "222" };
Pp(strArr);
}
public void Pp(string[] urls)
{
urls = new string[1];
urls[0] = "333";
}
结果strArr的还是原来的 { "111", "222" }
但是如果我Pp函数这么写:
public void Pp(string[] urls)
{
urls[0] = "333";
}
strArr的就会变成 { "333", "222" }
这是为什么呀?
urls是strArr引用的复制
第一个你urls = new的时候,它的引用会指向新分配的地址,同时后面333就修改在这个新地址上。而原来的strArr还是指向原来的数据
第二个没有修改urls指向的地址,只是修改了它的内容,所以就会使strArr的数据也发生变化
protected void Page_Load(object sender, EventArgs e)
{
string[] strArr = { "111", "222" };
Pp(ref strArr);
}
public void Pp(ref string[] urls)
{
urls = new string[1];
urls[0] = "333";
}
你是不是还应该补充一下变量作用域的问题呢?