- 引用类型作为值类型传递,形参和实参其实是两个指针,只不过指向的是同一块内存。新
new
一个对象是,它们两的联系就被切断了,指向了不同的内存块。 - 引用类型作为引用参数,此时的形参其实是实参的一个别名,它们两个其实是一个指针,新
new
一个对象是,指向的还是同一内存块,因为它们本身就是同一个指针。
两种情况的最后指向是不一样的。
以下情况是, 在方法内创建一个新对象并赋值给形参。
引用类型作为值参数
1 | using System; |
输出:1
2
3
4
5
6原始值:20
=======
修改值之后:50
新创建之后:20
=======
最后值:50 // 被修改
引用类型作为引用参数
1 | using System; |
输出:
1 | 原始值:20 |
如果不在方法内部改变引用形参的指向,他们操纵的内存区域是一样的,结果也是一样的。
1 | using System; |
输出:
1 | 调用前:a = 10, b = 20 |
1 | using System; |
输出:
1 | 调用前:a = 10, b = 20 |
参考:
《C#图解教程》 -> P66