《.NET框架程序设计》第五章 基元类型、引用类型与值类型

转载 2004年09月02日 20:09:00

一、基元类型(primitive type)编译器直接支持的数据类型。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

引用类型(reference type)总是从托管堆上进行分配。内存的回收通过垃圾收集器。

值类型(value type)通常分配在线程的堆栈中(当然,也可以被嵌入到一个引用类型的对象中)。值类型实例不受垃圾收集器的控制。

 

二、尽量使用FCL类型名:在开发中,尽量使用FCL类型名,也就是System.StringSystem.Int32等等。而不要使用stringint等基元类型名。因为FCL类型名具体的可以看出类型的一些限制,如Int32就是表示32位的有符号数,比较直观;另外,一些基元类型和对应的FCL类型名称不相同,容易引起混淆,如基元类型float对应的FCL类型名是System.Single;最后,同一个基元类型,可能在不同的编程语言中对应不同的FCL类型,这就会带来了一系列的潜在的问题。

三、类型转换:可以使用System.Convert类型的静态方法在不同类型的对象之间进行转型。Convert类型中的静态方法ChangeType可以将一个类型转换为另外一个任意的类型,前提是被转换类型实现了Iconvertible接口,特别是其中的ToType方法。(是否可以利用这个技术来实现点什么新的功能??)

四、溢出的异常的控制:许多基元类型的算术运算都会导致结果溢出,缺省情况下,这种溢出是不会抛出异常的,可以使用/checked+命令行开关告诉编译器使用带溢出的IL指令来产生代码。(如何在开发环境中打开这个开关??)另一种方法是在代码中使用checkedunchecked操作符来开关一段代码的溢出检查。我个人觉得没有必要使用checkedunchecked操作符来做这种精细的控制,虽然直接打开编译器的溢出检测开发会降低一些应用程序的性能,但是这种影响可以不必考虑。

五、引用类型和值类型的区别:任何都是引用类型,任何结构枚举都是值类型。另外,所有的值类型都必须继承自System.ValueType类型。CLR不允许一个值类型被用作基类型。

六、值类型的装箱与拆箱:当需要尽量提高一段程序的执行性能时,可以对这段程序进行分析,尽量减少其中的装箱和拆箱的操作。而之所以很多方法都提供了重载的版本,目的之一就是减少一些常用值类型的装箱操作。

C# 基元类型 引用类型和值类型

基元类型 引用类型 值类型
  • Stive_SourceXin
  • Stive_SourceXin
  • 2016-08-11 17:05:43
  • 728

.Net框架程序设计-读书笔记(第五章 基元类型、引用类型和值类型)

1. 基元类型、引用类型和值类型1.1. 基元类型编译器直接支持的类型称为基元类型(primitive type)。基元类型和.NET框架类库中的类型有直接的映射关系。1)       编译器能够在基...
  • baoxuan
  • baoxuan
  • 2006-05-29 11:08:00
  • 1091

C#详解值类型和引用类型区别

首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中。 值类型(value type):byte,short,int,lo...
  • qiaoquan3
  • qiaoquan3
  • 2016-04-20 17:59:42
  • 32530

.Net常见面试题整理(1)——值类型和引用类型

随笔- 39  文章- 0  评论- 105  .Net常见面试题整理(1)——值类型和引用类型 为了防止不提供原网址的转载,特在这里加上原文链接:ht...
  • Litt_J
  • Litt_J
  • 2014-12-16 02:45:55
  • 841

C++与C#中值类型与引用类型的区别

这些天学习C#,看到里面的值类型与引用类型,例如结构是值类型,类是引用类型,然后立马想到了C++中的类,那么C++中的类是什么类型呢,哈哈,忽然间有点迷惑,上网搜了搜还真有很多小伙伴们已经晕进去了,今...
  • linukey
  • linukey
  • 2014-12-04 09:25:20
  • 720

读书笔记_CLR.via.c#第五章_基元类型_引用类型_值类型

基元类型 1.不管在什么操作系统上c#的int始终代表32位整数。 2.c#中long代表64位。  类型转换 安全转换时,才允许隐式转型。 不安全转换时,为显式转型。  溢出检测...
  • qq_25601345
  • qq_25601345
  • 2017-08-20 12:20:16
  • 69

Java中引用类型和值类型的不同

在Java编程过程中,经常有人会因为没有弄清楚引用类型与值类型的区别而导致各种稀奇古怪的Bug出现,而且出现了还不知道问题在哪里。这里将简单阐述一下两者的区别。 引用数据类型:该类型指向一个对象,而...
  • smart_210_
  • smart_210_
  • 2016-08-13 22:06:33
  • 477

C#里面的值类型与引用类型的区别

C#里面把数据类型分为两大类,分别为值类型和引用类型,值类型包括基本数据类型(int ,double等),结构和枚举,,,引用类型包括接口,数组,Object类型,类,委托,字符串,null类型等,那...
  • u013360022
  • u013360022
  • 2014-01-04 14:11:08
  • 6952

C#中值类型和引用类型及类型的转换

在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 值类型 值类型变量可以直接分配给一...
  • wkyseo
  • wkyseo
  • 2016-10-25 09:52:38
  • 1170

【C#基础】值类型和引用类型

在备战软考的过程中,涉及到了原型模式,其中讲到了在浅复制的过程中,值类型和引用类型是有区别的。那么究竟什么是值类型,什么是引用类型呢? 在理解这两个概念之前,我们先谈一谈栈和堆。...
  • qq_26545305
  • qq_26545305
  • 2016-10-23 18:58:18
  • 1172
收藏助手
不良信息举报
您举报文章:《.NET框架程序设计》第五章 基元类型、引用类型与值类型
举报原因:
原因补充:

(最多只允许输入30个字)