C# 7.0 核心技术指南 (18):C#语言基础 2.3.3

阅读数:9 2019 年 11 月 30 日 23:32

C# 7.0核心技术指南(18):C#语言基础 2.3.3

(转换)

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

C#可以转换兼容类型的实例。转换始终会根据一个已经存在的值创建一个新的值。转换可以是隐式或显式的:隐式转换自动发生而显式转换需要强制转换。在以下的示例中,我们把一个 int 隐式转换为 long 类型(其存储位数是 int 的两倍);并将一个 int 显式转换为一个 short 类型(其存储位数是 int 的一半):

复制代码
int x = 12345; // int is a 32-bit integer
long y = x; // Implicit conversion to 64-bit integer
short z = (short)x; // Explicit conversion to 16-bit integer

隐式转换只有在以下条件都满足时才能进行:

  • 编译器能确保转换总能成功。
  • 没有信息在转换过程中丢失。1

1 需要注意的是,将一个非常大的 long 转换为 double 时,有可能造成精度丢失。

相对地,只有在满足下列条件时才需要显式转换:

  • 编译器不能保证转换总是成功。
  • 信息在转换过程中有可能丢失。

(如果编译器可以确定某个转换一定会失败,那么这两种转换都无法执行。包含泛型的转换在特定情况下也会失败,请参见 3.9.11 节)

以上的数值转换是 C#中内置的。C#还支持引用转换、装箱转换(见第 3 章)与自定义转换(请参见 4.14 节)。对于自定义转换,编译器并没有强制要求上述规则,因此没有良好设计的类型有可能在转换时出现意想不到的效果。

C# 7.0核心技术指南(18):C#语言基础 2.3.3

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

评论

发布