隐式类型局部变量






4.45/5 (9投票s)
隐式类型局部变量
在隐式类型局部变量声明中,局部变量的类型是从用于初始化变量的表达式推断出来的。当局部变量声明指定 `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();
在隐式类型局部变量声明中,局部变量声明符受到以下限制
- 声明符必须包含一个初始化器。
- 初始化器必须是一个表达式。初始化器本身不能是对象或集合初始化器,但它可以是一个包含对象或集合初始化器的 `new` 表达式。
- 初始化器表达式的编译时类型不能是空类型。
- 如果局部变量声明包含多个声明符,则所有初始化器必须具有相同的编译时类型。
以下是无效隐式类型局部变量声明的示例
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