对象之间的引用传递

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. 结论
首先画一幅图来描述一下的过程。
  clipboard[4]
1. 我们在new出来p1时,系统为我们在堆中开辟了一块内存。  //这个案例中,只new能再内存中开辟内存。
//↓这也就是为什么说,对象之间是赋值引用。 
2. Person p2 = p1; 这句话的时候,栈内存中的p2指向了 p1 new出来的堆内存中的区域。
基本上要说的就是这一幅图。理解了就好。


 
 
 
 
 

转载于:https://www.cnblogs.com/mcad/p/4193166.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值