C#:二维三维图形绘制工程实例宝典
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.1 简单类型

C#提供了称为简单类型的预定义结构类型集,简单类型通过保留字标识,而这些保留字只是System命名空间中预定义结构类型的别名。C#简单类型的保留字与预定义结构类型对应关系如表1-1所示。C#简单类型分为整数类型、布尔类型、字符类型、浮点类型和decimal类型。

表1-1 保留字与预定义结构类型对应关系

预定义结构类型和简单类型是等价的。例如,可用下列两种声明中的一种来声明一个整数变量:

          int a=10;
          System.Int32 a=10;

由于预定义结构类型是对象,因此两者都具有成员。如,int具有在System.Int32中声明的成员及从System.Object继承的成员,允许使用下面的语句:

          int I=int.MaxValue;       // 得到整型量的最大值,是Int32的属性之一
          string s=I.ToString();          // 把整型量转换成字符串,是Int32的一个实例方法
          string t=123.ToString();

1.整数类型

C#有9种整数类型:sbyte、byte、short、ushort、int、uint、long、ulong和char。取值范围如表2-2所示。

表1-2 整数类型的含义和取值范围

2.浮点类型

C#支持两种浮点类型:float和double。它们用32位单精度和64位双精度IEEE 754格式来表示。Float类型取值范围为1.5×10-45~3.4×1038,精度为7位。double取值范围为5.0×10-324~1.7×10308,精度为15位或16位。

3.decimal类型

decimal类型是用于财务和货币计算的128位数据类型。decimal类型比浮点类型具有更高的精度和更小的范围。decimal类型的范围是1.0×10-28~7.9×1028,精度为28或29个有效数字。当给decimal变量赋值时,使用m后缀来表明它是一个decimal类型。例如:

整型可以被隐式转换为decimal类型,其计算结果为decimal类型。可用整型初始化decimal型变量。如

          decimal myMoney=100.3m;
          decimal myMoney=1000;

浮点类型和decimal类型的精度和表示范围均不相同,它们之间的转换可能会产生溢出异常或精度损失,因此浮点类型和decimal类型之间不存在隐式转换。例如:

          decimal myMoney=100.34m;
          double x=(double) myMoney;
          myMoney=(decimal) x;

4.布尔类型

布尔类型表示布尔逻辑量。在C#中,布尔逻辑量只有true和false两个值。可以将布尔值赋给布尔形变量,也可以将值为布尔类型的表达式赋给布尔形变量,例如:

          bool var=true;
          bool var=(v > 0 && v < 10);
          bool var=(20 > 30);
          bool var=(c == s);

在C和C++中,布尔类型的值和int类型的值可相互转换,即false等效于零值,true等效于非零值。在C#中,布尔型和其他类型之间不存在标准转换。布尔类型与整型截然不同,不能用布尔值代替整型值,反之亦然。例如,下列if语句在C#中是非法的,而在C++中是合法的:

          int b=30;
          if(b)
      cout << "The value of b is true";

在C#中,正确的用法是通过显式地将整数或浮点值与零进行比较;或者是显式地将对象引用与null进行比较来完成的,例如:

          int b=30;
          if (b != 0)
      System.Console.WriteLine("The value of b is true");

          if (0 != b)
      System.Console.WriteLine("The value of b is true");

5.字符类型

除了数字以外,计算机处理的信息主要是字符。C#字符类型采用Unicode字符集,一个Unicode标准字符长度为16位,它允许用单个编码方案表示世界上使用的所有字符。

可以按如下方法直接给一个字符变量赋值:

          char c='c';

此外,也可以通过十六进制转义符(前缀“\x”加十六进制数字)或Unicode转义符(前缀“\u”加十六进制数字)给字符变量赋值,例如:

          char c='\x0067';
          char c='\u0067';

不存在从其他类型到char类型的隐式转换。对字符变量使用整数进行赋值和运算是不允许的。但是,字符型和整型之间可以进行显式转换,例如:

          char c=(char)10;
          int d=(int) 'j';

C#使用Unicode转义符,表1-3列出了各种转义符。

表1-3 转义符