第16课隐型变量、初始化器、匿名类型和隐型数组
隐型局部变量是使用var关键字声明的一种隐藏类型的局部 变量。初始化器包括对象初始化器和集合初始化器,它们 分别用来初始化对象和集合。使用new运算符和匿名对象 初始化器可以创建一个匿名类型的对象;使用var关键字 和匿名数组初始化器可以创建一个隐型数组。本章将讲解 C#语言中的隐型局部变量、对象初始化器、集合初始化 器、匿名类型和隐型数组,主要介绍以下知识点。
?声明隐型局部变量;
?使用隐型局部变量;
?对象初始化器;
?集合初始化器;
?匿名类型;
?隐型数组。
16.1隐型局部变量
顾名思义,隐型(implicitly typed)局部变量是一个局部变 量,而且它的类型被隐藏了。在隐型局部变量声明中,正 被声明的局部变量的类型可以从初始化该变量的表达式推 导出来。
16.1.1声明隐型局部变量
声明隐型局部变量需要使用var关键字,并使用var关键字作 为变量的类型。在声明隐型局部变量时,不明确指定该变 量的类型,而是使用var关键字指定变量的类型。该变量 的实际类型将在其初始化表达式中推导出来。
16.1.2使用隐型局部变量
使用隐型局部变量可以不显式指定变量的类型,从而简化了 程序代码。然而,如果大量使用隐型局部变量,往往可能 造成程序代码难以理解和阅读。因此,只有在适当的时候 使用隐型局部变量,才是一个比较好的选择。隐型局部变 量比较适合以下4种场景。
1.声明隐型局部变量 2.for语句中 3.foreach语句中 4.using语句中
16.2对象初始化器
对象初始化器(object initializer)又称为对象初始值设定项
,它可以为某个对象的零个或多个字段或属性指定值。即 对象初始化器不显式调用该对象类型的构造函数,就能够 创建该对象类型的实例。
对象初始化器包含一组成员初始值设定项。这一组设定项由 “{”和“}”包围,各个设定项之间用,(逗号)分隔。每一个 成员初始值设定项都为一个赋值表达式,表达式的左边为 成员的名称,表达式的右边是一个可计算的表达式。“ID
= 1”表达式就是一个成员初始值设定项,“{ID = 1,Name = "Zhangsan"}”表达式就是一组设定项。
16.3集合初始化器
集合初始化器(collection initializer)又称为集合初始值设 定项,它可以用来设置集合中的元素。集合初始化器包含 一组元素初始值设定项。这一组设定项由“{”和“}”包围, 各个设定项之间用,(逗号)分隔。每一个元素初始值设 定项指定一个元素,“{1,2,3,4,5,6,7,8,9}”表达式就是一组 元素初始值设定项。
16.4匿名类型
顾名思义,匿名类型是一种隐藏了类型名称的类型,它由 new运算符和匿名对象初始化器共同实现。即使用new运 算符和匿名对象初始化器可以创建一个新的对象,这个新 创建的对象就是一个匿名类型的对象。其中,把new运算 符和匿名对象初始化器组成的表达式又称为匿名对象创建 表达式。
16.5隐型数组
隐型数组和匿名类型比较相似。和匿名类型的匿名对象初始 化器一样,匿名数组也存在一个匿名数组初始化器。匿名 对象初始化器一般用于创建一个匿名类型的对象,匿名数 组初始化器用来创建一个匿名数组。
匿名数组由var关键字和匿名数组初始化器共同创建,而且 匿名数组初始化器中的元素类型都必须能够隐式转换为同 一个类型(不能为null)。即对于匿名数组初始化器而言
,会存在一种类型(不能为null),使得该匿名数组初始
化器中所有元素都能够转换为该类型的元素。
16.6实例一:在foreach语句中使用隐型局部 变量
【实例16-1】在foreach语句中使用隐型局部变量遍历元素类型 为string的数组中的每一个元素。该功能由VarForeach()静 态方法实现。
16.7小结
本章主要介绍了C#语言中的隐型变量、初始化器、匿名类型 和隐型数组,如声明隐型局部变量、使用隐型局部变量、 对象初始化器、集合初始化器、匿名类型、隐型数组等。 其中,读者要着重掌握声明隐型局部变量和使用隐型局部 变量,为后续编写C#程序代码奠定基础。下一章将要介 绍C#语言中的迭代器、匿名方法和扩展方法。
16.8习题
在Visual Studio 2008集成开发环境中创建名称为“Test_16”
的控制台应用程序,并实现以下功能。
(1)将名称为“class1.cs”的文件添加到该应用程序中。
(2)在该应用程序中使用隐型数组计算0~100(共101个整 数)的和。