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

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

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

(简化数组初始化表达式)

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

有两种方式可以简化数组初始化表达式。第一种是省略 new 运算符和类型限制条件:

复制代码
char[] vowels = {'a','e','i','o','u'};
int[,] rectangularMatrix =
{
{0,1,2},
{3,4,5},
{6,7,8}
};
int[][] jaggedMatrix =
{
new int[] {0,1,2},
new int[] {3,4,5},
new int[] {6,7,8}
};

第二种是使用 var 关键字,使编译器隐式确定局部变量类型:

复制代码
var i = 3; // i is implicitly of type int
var s = "sausage"; // s is implicitly of type string
// Therefore:
var rectMatrix = new int[,] // rectMatrix is implicitly of type int[,]
{
{0,1,2},
{3,4,5},
{6,7,8}
};
var jaggedMat = new int[][] // jaggedMat is implicitly of type int[][]
{
new int[] {0,1,2},
new int[] {3,4,5},
new int[] {6,7,8}
};

数组类型可以进一步应用隐式类型转换规则:可以直接在 new 关键字之后忽略类型限定符,而由编译器推断数组类型:

复制代码
var vowels = new[] {'a','e','i','o','u'}; // Compiler infers char[]

为了使上述机制工作,数组中的所有元素必须能够隐式转换为一种类型(至少有一个元素是目标类型,而且最终只有一种最佳类型),例如:

复制代码
var x = new[] {1,10000000000}; // all convertible to long

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

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

评论

发布