一.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};

二.总结

类型推理功能本身并不是很有效,它有时候会使事情变的更复杂。

但是类型推理的概念很重要,因为他是其他技术的基础。

posted on 2013-11-02 16:58  zzunstu  阅读(340)  评论(0编辑  收藏  举报