|
|
|
|
移动端

2.4.2 引用类型

《C# 6.0本质论(第5版)》第2章数据类型,本章将探讨这些数据类型,更深入地研究字符串类型,并引入数组的概念。本节为大家介绍引用类型。

作者:周靖/庞燕 译来源:人民邮电出版社|2017-07-21 16:36

【新品产上线啦】51CTO播客,随时随地,碎片化学习

2.4.2 引用类型

引用类型的值存储的是对数据存储位置的引用,而不是直接存储数据。要去那个位置才能找到真正的数据。因此,为了访问数据,“运行时”要先从变量中读取内存位置,再“跳转”到包含数据的内存位置。引用类型指向的内存区域称为堆(heap),如图2-2所示。

引用类型不像值类型那样要求创建数据的内存副本,所以复制引用类型的实例比复制大的值类型实例更高效。将引用类型的变量赋给另一个引用类型的变量,只会复制引用而不需要复制所引用的数据。事实上,每个引用总是处理器的“原生大小”。也就是,32位处理器只需复制32位引用,64位处理器只需复制64位引用,以此类推。显然,复制对一个大数据块的引用,比复制整个数据块快得多。

由于引用类型只复制对数据的引用,所以两个不同的变量可引用相同的数据。如果两个变量引用同一个对象,利用一个变量更改对象的字段,用另一个对象访问字段时将看到更改结果。无论赋值还是方法调用都会如此。因此,如果在方法内部更改引用类型的数据,控制返回调用者之后,将看到更改后的结果。有鉴于此,在决定定义引用类型还是值类型时,一个决定性的因素就是:如果对象在逻辑上是固定大小的不可变的值,就考虑定义成值类型;如果逻辑上是可引用的可变的对象,就考虑定义成引用类型。

除了string以及自定义类(如Program),本书迄今为止讲到的所有类型都是值类型。但实际中大多数类型都是引用类型。另外,虽然偶尔需要自定义的值类型,但更常用的还是自定义的引用类型。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

C#入门经典(第3版)

本书将全面介绍C#编程的所有知识,共分为5篇:第1篇是C#语言:介绍了C#语言的所有内容,从基础知识到面向对象的技术,应有尽有。第2篇是Win...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊