对象之间的引用传递
1.案例
首先我们从一个案例开始 引入今天的知识。
先创建一个类Person。
public class Person
{
public string Name
{
set;
get;
}
public string Age
{
set;
get;
}
public void SayHi()
{
Console.WriteLine(this.Name+" "+this.Age);
}
}
//调用
//这种写法叫对象初始化器,算是一个简化的写法。
Person p1 =new Person() {Age =18, Name = "Winter"};
p1.SayHi(); //输出了: Winter 18
Person p2 = p1;
p2.Name = "大傻子";
P2.Age = 99;
p1.SayHi(); //输出了: 大傻子 99
? 给p2赋值,为什么会影响到p1呢? 这是因为对象间是引用传递的!
—————————————————————————————————————
2. 结论
首先画一幅图来描述一下的过程。
1. 我们在new出来p1时,系统为我们在堆中开辟了一块内存。 //这个案例中,只new能再内存中开辟内存。
//↓↓↓↓这也就是为什么说,对象之间是赋值引用。
2. Person p2 = p1; 这句话的时候,栈内存中的p2指向了 p1 new出来的堆内存中的区域。
基本上要说的就是这一幅图。理解了就好。
作者:大黑兔
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.