一.var
C#是一种强类型化的语言,这表示每个变量都有固定的类型,只能用于接受该类型的代码中。
int myvar = 5;
C#3.0引入了新关键字var,它可以代替前面的代码中的type:
var myvar = 5;
myvar是int类型的变量,而不是var类型的变量,这一点非常的重要,使用var时,并不是声明了一个没有类型的变量,也不是声明了一个类型可以变化的变量,否则C#就不在是强类型化语言了。如果编译器不能确定用var声明的变量类型,代码就不会通过编译,因此,在用var声明变量时,必须同时初始化该变量,因为如果没有初始化,编译器就不能确定该变量的类型。
var关键字还可以通过数组初始化器来推断数组的类型:
var myArray =new int[] {4,5,6};
在用这种方法隐式指定数组的类型时,初始化器中使用的数组元素必须是以下情形中的一种:
- 相同的类型
- 相同的引用类型或null
- 所有元素的类型都可以隐式的转换为一个类型
以下代码无法通过编译:
var myArray = new[] { 4,null,2}; var myArray1 = new[] { 4, "not int", 2 };
下面的可以通过编译:
var myArray = new int?[] { 4,null,2};
二.总结
类型推理功能本身并不是很有效,它有时候会使事情变的更复杂。
但是类型推理的概念很重要,因为他是其他技术的基础。