C# 7.0 核心技术指南 (26):C#语言基础 2.4.6&2.4.7

阅读数:6 2019 年 11 月 30 日 23:38

C# 7.0核心技术指南(26):C#语言基础 2.4.6&2.4.7

(8 位和 16 位整数类型)

内容简介
本书前三章将集中介绍 C#语言。首先介绍基本的语法、类型和变量。而后会介绍一些高级的特性,如不安全代码以及预处理指令。如果你是 C#语言的初学者,请循序渐进地阅读这些章节。
其余各章则涵盖了.NET Framework 的核心功能,包括 LINQ、XML、集合、并发、I/O 和网络、内存管理、反射、动态编程、特性、安全、应用程序域和原生互操作性等主题。第 6 章和第 7 章是后续主题的基础,除这两章之外,其余各章可以按照需要以任何顺序阅读。LINQ 相关的三个章节好按顺序阅读。其中的一些章节需要一些并发相关的知识,这些知识将在第 14 章中介绍。

8 位和 16 位整数类型指 byte、sbyte、short、ushort。这些类型自己并不具备算术运算符,所以 C#隐式地将它们转换为所需的更大一些的类型。当试图把运算结果赋给一个小的整数类型时会产生编译时错误:

复制代码
short x = 1, y = 1;
short z = x + y; // Compile-time error

在以上情况下,x 和 y 会隐式转换成 int 以便进行加法运算。因此运算结果也是 int,它不能隐式转换回 short(因为这可能会造成数据丢失)。我们必须使用显式转换才能令其通过编译:

复制代码
short z = (short) (x + y); // OK

(特殊的 float 和 double 值)

不同于整数类型,浮点类型包含某些特定运算需要特殊对待的值。这些特殊的值是 NaN(Not a Number,非数字)、+∞、-∞和 -0。float 和 double 类型包含表示 NaN、+∞、-∞值的常量。其他的常量还有 MaxValue、MinValue 以及 Epsilon。例如:

复制代码
Console.WriteLine (double.NegativeInfinity); // -Infinity

double 和 float 类型的特殊值的常量表如下:

特殊值 double 类型常量 float 类型常量
NaN double.NaN float.NaN
+∞ double.PositiveInfinity float.PositiveInfinity
-∞ double.NegativeInfinity float.NegativeInfinity
-0 -0.0 -0.0f

非零值除以零的结果是无穷大。例如:

复制代码
Console.WriteLine ( 1.0 / 0.0); // Infinity
Console.WriteLine (-1.0 / 0.0); // -Infinity
Console.WriteLine ( 1.0 / -0.0); // -Infinity
Console.WriteLine (-1.0 / -0.0); // Infinity

零除以零或无穷大减去无穷大的结果是 NaN。例如:

复制代码
Console.WriteLine ( 0.0 / 0.0); // NaN
Console.WriteLine ((1.0 / 0.0) - (1.0 / 0.0)); // NaN

使用比较运算符(==)时,一个 NaN 的值永远也不等于其他的值,甚至不等于其他的 NaN 值:

复制代码
Console.WriteLine (0.0 / 0.0 == double.NaN); // False

必须使用 float.IsNaN 或 double.IsNaN 方法来判断一个值是否为 NaN:

复制代码
Console.WriteLine (double.IsNaN (0.0 / 0.0)); // True

但使用 object.Equals 方法时,两个 NaN 却是相等的:

复制代码
Console.WriteLine (object.Equals (0.0 / 0.0, double.NaN)); // True

NaN 在表示特殊值时很有用。在 WPF 中,double.NaN 表示值为“Automatic”(自动)。另一种表示方法是使用可空类型(nullable,见第 4 章)。还可以使用一个包含数值类型和一个额外字段的自定义结构体(见第 3 章)。

float 和 double 遵循 IEEE 754 格式类型规范。几乎所有的处理器都原生支持此规范。如需此类型行为的详细信息,可参考 http://www.ieee.org

C# 7.0核心技术指南(26):C#语言基础 2.4.6&2.4.7

购书地址 https://item.jd.com/12681788.html?dist=jd

评论

发布