嘟大猫 2017-04-21 04:42 采纳率: 0%
浏览 1676

C# 在函数中new一个引用类型的参数,为什么就不会改变这个参数的值了

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" }
这是为什么呀?

  • 写回答

3条回答 默认 最新

  • oyljerry 2017-04-21 05:36
    关注

    urls是strArr引用的复制

    第一个你urls = new的时候,它的引用会指向新分配的地址,同时后面333就修改在这个新地址上。而原来的strArr还是指向原来的数据

    第二个没有修改urls指向的地址,只是修改了它的内容,所以就会使strArr的数据也发生变化

    评论

报告相同问题?

悬赏问题

  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器