博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
陷阱~关于引用类型,请不要模棱两可!
阅读量:5773 次
发布时间:2019-06-18

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

引用类型总是那么神秘,原因就是因为它存储的是内存地址,对于一个引用类型的变量来说,你在进行赋值操作时,实现上是以地址的形式传递的,当你在代码段中对一个引用类型操作时,他会反应到原对象上,以下我说几个引用类型常见的用法:

情况一:定义集合变量后,修改它的内容元素,会影响原对象吗?

答:对的,会反映到元集合上

代码:

List
yiyi = new List
{ new Yinyong { ID = 1, Name = "zzl" }, new Yinyong { ID = 2, Name = "bobo" } }; yiyi[0].Name = "修改zzl"; //其它业务 Console.WriteLine(yiyi[0].Name); //结果:修改zzl

情况二:定义集合变量后,将它的部分元素添加到另一个集合中,在另一个集合中修改它的元素,是否会反映到原集合?

答:会的,会反映到元集合上

代码:

List
yiyi = new List
{ new Yinyong { ID = 1, Name = "zzl" }, new Yinyong { ID = 2, Name = "bobo" } }; List
temp = new List
(); temp.AddRange(yiyi.Where(i => i.ID == 1)); foreach (var item in temp) { item.Name = "修改name"; } //结果:修改name

情况三:定义集合变量后,将它以参数的形式传给其它方法,在其它方法中修改这个对象,是否会反映到原方法的原集合上?

答:会的,会反映到元集合上

代码:

static void Main(string[] args)        {         List
yiyi = new List
{ new Yinyong { ID = 1, Name = "zzl" }, new Yinyong { ID = 2, Name = "bobo" } }; ModifySet(yiyi); } ///
/// 修改yiyi这个对象,而这个对象是在主方法里定义的 /// ///
static void ModifySet(List
yiyi) { yiyi[0].Name = "修改第一个元素的name属性"; }

 

好了,掌握了上面三点之后,我们在写代码时会更加得心应手,我们只有掌握好基础知识,才能设计出更好的程序!

转载地址:http://gqxux.baihongyu.com/

你可能感兴趣的文章
TableStore:用户画像数据的存储和查询利器
查看>>
2019 DockerCon 大会即将召开,快来制定您的专属议程吧!
查看>>
15分钟构建超低成本数据大屏:DataV + DLA
查看>>
MySQL 8.0 压缩包版安装方法
查看>>
@Transient注解输出空间位置属性
查看>>
Ansible-playbook 条件判断when、pause(学习笔记二十三)
查看>>
5种你未必知道的JavaScript和CSS交互的方法(转发)
查看>>
线程进程间通信机制
查看>>
galera mysql 多主复制启动顺序及命令
查看>>
JS prototype 属性
查看>>
中位数性质——数列各个数到中位数的距离和最小
查看>>
WebApp之Meta标签
查看>>
添加Java文档注释
查看>>
Python3批量爬取网页图片
查看>>
iphone-common-codes-ccteam源代码 CCEncoding.m
查看>>
微信公众平台开发(96) 多个功能整合
查看>>
[转]MVC4项目中验证用户登录一个特性就搞定
查看>>
用Perl编写Apache模块续二 - SVN动态鉴权实现SVNAuth 禅道版
查看>>
Android 阴影,圆形的Button
查看>>
C++概述
查看>>