65.9K
CodeProject 正在变化。 阅读更多。
Home

隐式类型局部变量

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.45/5 (9投票s)

2010年11月11日

CPOL
viewsIcon

40604

隐式类型局部变量

在隐式类型局部变量声明中,局部变量的类型是从用于初始化变量的表达式推断出来的。当局部变量声明指定 `var` 作为类型,并且作用域内没有名为 `var` 的类型时,该声明就是一个隐式类型局部变量声明。例如

var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] {1, 2, 3};
var orders = new Dictionary();

上面的隐式类型局部变量声明与以下显式类型声明完全等效

int i = 5;
string s = "Hello";
double d = 1.0;
int[] numbers = new int[] {1, 2, 3};
Dictionary orders = new Dictionary();

在隐式类型局部变量声明中,局部变量声明符受到以下限制

  1. 声明符必须包含一个初始化器。
  2. 初始化器必须是一个表达式。初始化器本身不能是对象或集合初始化器,但它可以是一个包含对象或集合初始化器的 `new` 表达式。
  3. 初始化器表达式的编译时类型不能是空类型。
  4. 如果局部变量声明包含多个声明符,则所有初始化器必须具有相同的编译时类型。

以下是无效隐式类型局部变量声明的示例

var x;                      // Error, no initializer to infer type from
var y = {1, 2, 3};      // Error, collection initializer not permitted
var z = null;             // Error, null type not permitted
© . All rights reserved.