一、值类型
除去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 Auther:Mark Michaelis
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 (3rd Edition) Beginning ASP.NET 4 in C# 2010 C# 4.0 Unleashed C# in Depth, Second Edition Pro C# 2010 and the .NET 4 Platform, 4th Edition Microsoft Visual C# 2010 Step by Step ...
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, 3rd Edition (Microsoft .NET Development Series) 984 pages Publisher: Addison-Wesley Professional; 3 edition (March 20, 2010) Language: English ISBN-10: 0321694694 ISBN-13: 978...
Essential C# 4.0(3rd Edition).pdf
PDF版本:[C_#4.0本质论(第3版)].(Essential.C#4.0).Mark.Michaelis.文字版
中文名: C#4.0本质论 (第3版) 原名: Essential C# 4.0 作者: Mark Michaelis 资源格式: PDF 版本: 英文文字版 出版社: Addison-Wesley Professional书号: 978-0321694690发行时间: 2010年03月 地区: 美国 语言: 英文...
Essential+C#+4.0+3rd+Edition
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 ...
When you have questions about how to use C# 4.0 or the .NET CLR, this highly acclaimed bestseller has precisely the answers ... This book has all the essential details to keep you on track with C# 4.0.
Essential C# 是一本包罗万象,精彩纷呈的工具书,这个版本增加并行编程相关的内容
《C#4.0本质论(第3版)》英文版 (Essential.C#4.0).Mark.Michaelis
本文档为 Essential C# 带完整目录标签的试读英文原版,适用于.net 4.0,书内仅包含例子篇章,如需完整版请查看我的其他资源
Addison.Wesley.Essential.CSharp.4.0.Feb.2010.rar
Essential.CSharp.4.0.pdf
The rest of this chapter describes the essential features of the C# language. Although later chapters describe rules and exceptions in a detail-oriented and sometimes mathematical manner, this chapter...
2010年2月,Jeffrey Richter又推出了针对Visual Studio 2010、.NET 4.0、C# 4.0的集大成之作《CLR via C#》第三版。 本书分为五个部分: 第一部分,CLR基础(CLR Basics),介绍CLR的执行模型,程序集...
Book : Essential CSharp 4.0 Language : English Format : PDF