C# 传入引用类型的参数 返回值是否发生变化
2016-12-05 08:16
295 查看
前一段时间做项目是,一YY说如果一个方法的参数是引用类型,那么在这个方法里面所做的所有的修改再方法调用后应该有体现。事实是这样的吗?
先看code 和运行结果:
运行结果
方法SetPersonInfo和SetPersonInfo2虽然都是传递PersonInfo的实例 p,但是SetPersonInfo2是修改实例p的属性Name,SetPersonInfo是修改PersonInfo的实例 p的指向地址。这里的实例p是一个地址,只是这个地址指向一个实例A,SetPersonInfo2是在修改这个实例A,所以后面的输出的name应该是修改后的值,但是方法PersonInfo是重新创建一个实例B,并把p的地址指向B。这里的方法调用都是值传递,值传递的意思 就是在进入方法时把值拷贝一份。
先看code 和运行结果:
运行结果
方法SetPersonInfo和SetPersonInfo2虽然都是传递PersonInfo的实例 p,但是SetPersonInfo2是修改实例p的属性Name,SetPersonInfo是修改PersonInfo的实例 p的指向地址。这里的实例p是一个地址,只是这个地址指向一个实例A,SetPersonInfo2是在修改这个实例A,所以后面的输出的name应该是修改后的值,但是方法PersonInfo是重新创建一个实例B,并把p的地址指向B。这里的方法调用都是值传递,值传递的意思 就是在进入方法时把值拷贝一份。
相关文章推荐
- .net c#操作windows计划任务程序,新建,运行,停止,启用,禁用计划任务
- WinForm窗体自适应
- C#实现拉格朗日、牛顿、Hermite插值
- C# 并行编程 之 轻量级手动重置事件的使用
- C#基础-异常处理
- C#夯实基础之接口(《CLR via C#》读书笔记)
- 【C#】循环结构
- 【c#】键盘事件(keypress keydown keyup)
- C#
- C#\WPF高仿QQ音乐V12.8界面篇《1》
- C#-Attribute特性
- C#基础-数据类型转换
- C#基础-转义符
- C#制作gif
- C#编码规范
- VS2015 C# 当前不会命中断点 还没有为该文档加载任何符号
- 第五章 使用复合赋值和循环语句
- 【初步了解】C#-Socket
- jinkins在windows上的安装 配置C#编译
- C#基础-数据类型