AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > .NET技术

C#学习第五天

51自学网 http://www.51zixue.net


 

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 枚举类型

当你想声明一个由一指定常量集合组成的独特类型时,枚举类型正是你要寻觅的。最简单的形式,它看起来可能象这样:
enum MonthNames { January, February, March, April };

因我惯用缺省设置,故枚举元素是int型,且第一个元素为0值。每一个连续的元素按1递增。如果你想给第一个元素直接赋值,可以如下把它设成1:
enum MonthNames { January=1, February, March, April };

如果你想赋任意值给每个元素——甚至相同的值——这也没有问题:
enum MonthNames { January=31, February=28, March=31, April=30 };

最后的选择是不同于int的数据类型。可以在一条语句中按如此赋值:
enum MonthNames : byte { January=31, February=28, March=31, April=30 };
你可以使用的类型仅限于long、int、short和byte。

 
 

上一篇:C#学习第六天  下一篇:C#学习第四天