首页 | 互联网 | IT动态 | 网络设备 | 服务器 | IDC | 安全 | Cisco | Windows | Linux | Java | .Net | Oracle | CIW | 华为 | 专题
IT技术 | 网页设计 | 平面设计 | 电子书下载 | 教学视频 | 方案 | 数字网校 | 直播室 | 虚拟考场 | 面授培训 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Dotnet频道
中国IT教育
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 文章正文

展现C#世界之四:C#类型

文章来源中国IT实验室收集整理 作者佚名 更新时间2007-11-29 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

  第四章 C#类型

  既然你知道了怎样创建一个简单的C#程序,我将会给你介绍C#的类型系统。在这一章中,你学到如何使用不同的值和引用类型,加框和消框机制能为你作些什么。尽管这一章的不侧重于例子,但你可以学到很多重要的信息,关于如何创建现成类型的程序。

  4.1 值类型

  各种值类型总是含有相应该类型的一个值。C#迫使你初始化变量才能使用它们进行计算-变量没有初始化不会出问题,因为当你企图使用它们时,编译器会告诉你。 每当把一个值赋给一个值类型时,该值实际上被拷贝了。相比,对于引用类型,仅是引用被拷贝了,而实际的值仍然保留在相同的内存位置,但现在有两个对象指向了它(引用它)。C#的值类型可以归类如下:

  。简单类型(Simple types )

  。结构类型(struct types)

  。枚举类型(Enumeration types)

  4.1.1 简单类型

  在C#中出现的简单类型共享一些特性。第一,它们都是。NET系统类型的别名。第二,由简单类型组成的常量表达式仅在编译时而不是运行时受检测。最后,简单类型可以按字面被初始化。以下为C#简单类型归类:

  。整型

  。布尔型

  。 字符型 (整型的一种特殊情况)

  。浮点型

  。小数型

  4.1.1.1 整型

  C#中有9个整型。 sbyte 、byte、 short、 ushort、 int、 uint、 long、 ulong 和 char(单独一节讨论)。它们具有以下特性:

  。sbyte型为有符号8位整数,取值范围在128~127之间。

  。bytet型为无符号16位整数,取值范围在0~255之间。

  。short型为有符号16位整数,取值范围在-32,768~32,767之间。

  。ushort型为无符号16位整数,取值范围在0~65,535之间。

  。int型为有符号32位整数,取值范围在-2,147,483,648~ 2,147,483,647之间。

  。uint型为无符号32位整数,取值范围在 0 ~ 4,294,967,295之间。

  。long型为64位有符号整数,取值范围在9,223,372,036,854,775,808~ 9,223,372,036,854,775,807之间。

  。ulong型为64位无符号整数,取值范围在0 ~ 18,446,744,073,709,551,615之间。

  VB和C程序员都可能会对int和long数据类型所代表的新范围感到惊讶。和其它的编程语言相比,在C#中,int不再取决于一个机器的字(word)的大小,而long被设成64位。

  4.1.1.2 布尔型

  布尔数据类型有true和false两个布尔值。可以赋于true或false值给一个布尔变量,或可以赋于一个表达式,其所求出的值等于两者之一:

  bool bTest = (80 > 90);

  与C和C++相比,在C#中,true值不再为任何非零值。不要为了增加方便而把其它整型转换成布尔型。

  4.1.1.3 字符型

  字符型为一个单Unicode 字符。一个Unicode字符16位长,它可以用来表示世界上多种语言。可以按以下方法给一个字符变量赋值:

  char chSomeChar = 'A';

  除此之外,可以通过十六进制转义符(前缀\x)或Unicode表示法给变量赋值(前缀\u):

  char chSomeChar = '\x0065';

  char chSomeChar = '\u0065';

  不存在把char转换成其它数据类型的隐式转换。这就意味着,在C#中把一个字符变量当作另外的整数数据类型看待是行不通的——这是C程序员必须改变习惯的另一个方面。但是,可以运用显式转换:

  char chSomeChar = (char)65;

  int nSomeInt = (int)'A';

  在C中仍然存在着转义符(字符含义)。要换换脑筋,请看表4.1.

  table 4.1 转义符( Escape Sequences)

  转义符 字符名

  \' 单引号

  \" 双引号

  \\ 反斜杠

  \0 空字符

  \a 感叹号(Alert )

  \b 退格

  \f 换页

  \n 新行

  \r 回车

  \t 水平 tab

  \v 垂直tab

  4.1.1.4 浮点型

  两种数据类型被当作浮点型:float和double.它们的差别在于取值范围和精度:

  float: 取值范围在 1.5x10^-45~ 3.4x10^38之间, 精度为7位数。

  double: 取值范围在 5.0x10^-324 ~ 1.7x10^308之间, 精度为 15~16 位数。

  当用两种浮点型执行运算时,可以产生以下的值:

  正零和负零

  正无穷和负无穷

  非数字值(Not-a-Number,缩写NaN)

  非零值的有限数集

  另一个运算规则为,当表达式中的一个值是浮点型时,所有其它的类型都要被转换成浮点型才能执行运算。

[1] [2] [3] 下一页  

【责编:John】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 社区讨论
 博客论点
 Dotnet频道相关导航