第四章 C#类型

中慧智达

中慧智达

2016-02-19 12:12

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的第四章 C#类型,希望大家看完后能赶快学习起来。
四章  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)

转义符                  字符名
                            单引号
"                           双引号
                           反斜杠
                        空字符
a                        感叹号(Alert  )
                        退格
f                        换页
                       新行
                        回车
                       水平 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)
    非零值的有限数集
    另一个运算规则为,当表达式中的一个值是浮点型时,所有其它的类型都要被转换成浮点型才能执行运算。

4.1.1.5   小数型(The decimal Type)
    小数型是一种高精度、128位数据类型,它打算用于金融和货币的计算。它所表示的范围从大约1.0x10^-28 到
7.9x10^28,具有28至29位有效数字。要注意,精度是以位数 (digits)而不是以小数位(decimal places)表示。运算准确
到28个小数位的最大值。
    正如你所看到的,它的取值范围比double的还窄,但它更精确。因此,没有decimal和double之间的隐式转换——往一
个方向转换可能会溢出,往另外一个方向可能会丢失精度。你不得不运用显式转换。
     当定义一个变量并赋值给它时,使用 m 后缀以表明它是一个小数型:
          decimal decMyValue = 1.0m;
     如果省略了m,在变量被赋值之前,它将被编译器认作double型。

4.1.2  结构类型
     一个结构类型可以声明构造函数、常数、字段、方法、属性、索引、操作符和嵌套类型。尽管列出来的功能看起来象
一个成熟的类,但在C#中,结构和类的区别在于结构是一个值类型,而类是一个引用类型。与C++相比,这里可以用结构关
键字定义一个类。
    使用结构的主要思想是用于创建小型的对象,如Point和FileInfo等等。你可以节省内存,因为没有如类对象所需的那
样有额外的引用产生。例如,当声明含有成千上万个对象的数组时,这会引起极大的差异。
    清单4.1  包含一个命名为IP的简单结构,它表示一个使用byte类型的4个字段的IP地址。我不包括方法等,因为这些
工作正如使用类一样,将在下一章有详细的描述。

清单4.1   定义一个简单的结构

1: using System;
2:
3: struct IP
4: {
5:  public byte b1,b2,b3,b4;
6: }
7:
8: class Test
9: {
10:  public static void Main()
11:  {
12:   IP myIP;
13:   myIP.b1 = 192;
14:   myIP.b2 = 168;
15:   myIP.b3 = 1;
16:   myIP.b4 = 101;
17:   Console.Write("{0}.{1}.",myIP.b1,myIP.b2);
18:   Console.Write("{0}.{1}",myIP.b3,myIP.b4);
19:  }
20: }

4.1.3  枚举类型
   当你想
展开更多 50%)
分享

猜你喜欢

第四章 C#类型

编程语言 网络编程
第四章 C#类型

第四章 温馨絮语

分娩
第四章 温馨絮语

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

行尸走肉第四章攻略

电脑网络
行尸走肉第四章攻略

PHP学习宝典-第四章

PHP
PHP学习宝典-第四章

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

XSL基础教程第四章

Web开发
XSL基础教程第四章

第四章 颜色背景的CSS

Html CSS布局 Div+CSS XHTML
第四章 颜色背景的CSS

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SUNWEN教程之----C#进阶(九)

SUNWEN教程之----C#进阶(九)

SUNWEN教程之----C#进阶(三)

SUNWEN教程之----C#进阶(三)
下拉加载更多内容 ↓