一、值类型
除去string外,所有的预定义基础类型都是值类型。值类型直接包含值。换句话说,该变量指向内存中存储(变量)值的同一地址。
正因为如此,当一个不同的变量被分配了相同的值,原始变量的值的内存副本改变到新的变量的地址。一个相同值类型的第二个变量不能指向内存中的第一个变量相同的地址。因此,改变了第一个变量的值不会影响到第二个值。
如下图:
如上图,number1指向包含值42的内存中的特殊地址,将number1分配给number2后,这两个变量都包含值42。然而,修改任何一个变量的值不影响另外一个。
类似地,传递一个值类型到一个方法(类如Console.WriteLine())会导致内存复制,方法中参数的任何改变不会影响调用函数范围内的原始值。因为值类型需要一个内存复制,通常它们应当被定义为小额内存开销(小于16字节)
二、变量类型
引用类型和引用它们的变量指向数据存储地址。引用类型存储了数据存储地址的引用,而不是直接存储数据。因此,访问数据时,运行时将读取(引用变量的)内存位置,并跳到包含数据的内存地址。一个引用类型指向的数据内存区域是一个Heap(堆),如下图
一个引用类型并不像值类型那样需要数据的相同的内存副本,后者效率更高但会导致一些问题。当把一个引用类型的变量值赋给另外一个引用类型变量时,仅
有一次地址的内存复制发生,因此,引用类型需要的内存复本总是内存地址本身大小(32位处理器复制32bit,64位处理器复制64bit)。
显然,不复制数据将比值类型的(复制)快一些,特别是后者的数据较庞大时。由于引用类型仅仅复制数据的地址,两个不同的变量能指向相同的数据,通过
一个变量改变数据将改变另一个变量。在赋值或方法调用时均如此。因此,一个方法会影响引用类型的数据并返回给调用者。由于这个原因,选择定义一个变量为值
类型还是引用类型的决定性因素是该对象是否在逻辑上是一样的大小不变的固定值,如果是,则值类型。
string,自定义的类属于引用类型。
--邀月译自《Essential C# 4.0》
附:
值类型:基础数据类型(整型、布尔型、字符型、实数型)、结构型、枚举型。
引用类型:类、对象、string、数组、接口、委托。
邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
助人等于自助!
3w@live.cn
分享到:
相关推荐
Essential C# 4.0 完美版 附件里有两个pdf,内容完全一样,似乎清晰度不一样 984 pages Publisher: Addison-Wesley Professional; 3 edition (March 20, 2010) Language: English ISBN-10: 0321694694 ISBN-13:...
Essential C# 4.0 is a well-organized,“no-fluff” guide to all versions of C# for programmers at all levels of C# experience. This fully updated edition shows how to make the most of C# 4.0’s new ...
Essential C# 4.0已经是第三版,从发布以来受到广大.Net开发人员的关注。该书详细介绍C#在.Net Framework 4.0中的应用,介绍C# 4.0新特征,适合.Net开发人员作为参考书使用。
《Essential C# 4.0 第三版》是一本专为C#程序员精心编写的经典教程,中文版的发布让国内的开发者得以更方便地掌握C#编程的核心概念和技术。这本书不仅覆盖了C#的基础知识,还与时俱进地加入了当时最新的C# 4.0特性...
2. **动态类型**:C# 4.0引入了`dynamic`关键字,允许在运行时进行类型绑定,使得与动态语言的交互变得更加便捷,如与Python或JavaScript等的集成。 3. **多线程和并发**:C# 4.0提供了Task Parallel Library (TPL)...
《Essential C# 4.0》一书不仅是对C# 4.0语言特性的全面介绍,也包含了大量实用示例和最佳实践,对于初学者和有经验的开发者都是一个宝贵的学习资源。无论是想深入了解C# 4.0的细节,还是希望快速掌握其核心功能,这...
6. **委托与事件**:C#中的委托是函数的引用,常用于实现回调和事件处理;事件则是多线程编程中的常见模式,用于处理异步操作。 7. **异步编程**:C# 4.0提供了异步编程的支持,通过async和await关键字,可以编写出...
《Essential C# 4.0》是一本深入讲解C#编程语言的书籍,主要针对的是C# 4.0版本。C#是由微软公司开发的一种面向对象的、现代的编程语言,广泛应用于Windows平台上的应用程序开发,尤其是.NET框架下的应用。这本书...
Essential C# 5.0 is a well-organized, no-fluff guide to the latest versions of C# for programmers at all levels of C# experience. Fully updated to reflect new features and programming patterns ...
根据提供的文件信息,我们可以推断出《Essential C# 4.0》这本书是一本针对C# 4.0编程语言及其在.NET框架中的应用进行深入讲解的专业书籍。作者Mark Michaelis是一位经验丰富的软件开发专家,该书由Pearson ...