博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对象之间的引用传递
阅读量:5243 次
发布时间:2019-06-14

本文共 677 字,大约阅读时间需要 2 分钟。

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出来的堆内存中的区域。
基本上要说的就是这一幅图。理解了就好。
 
 
 
 
 

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

你可能感兴趣的文章
Docx转Doc操作(c#)
查看>>
Docker——error pulling image configuration
查看>>
一条简单的 SQL 执行超过 1000ms,纳尼?
查看>>
Python函数(一)之杵臼之交
查看>>
关于将qt作为max插件ui库所遇到的困难
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
SendMail与Postfix的架构备忘
查看>>
paip.mysql 性能测试 报告 home right
查看>>
Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216 java c# php js.docx...
查看>>
283. Move Zeroes把零放在最后面
查看>>
我的函数说明风格
查看>>
ssh 简介
查看>>
26.无向网邻接表类
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
洛谷 p1352 没有上司的舞会 题解
查看>>
Python 数据类型
查看>>
Task 与 Activity
查看>>
Google Guava学习笔记——简介
查看>>
历时八年,HTML5 标准终于完工了
查看>>