net 3.5中关于var、初始化、匿名类和扩展方法介绍

C#编译器已经将ss编译成了String变量了。而在输出ss后,再输入“.”后,会看到将String类型变量的相应方法和属性也列出来了,因此可以断定,C#将ss看成了String类型,而不是Object。所以使用var定义变量同时可以拥有Object和强类型的优点。在C#3.0中提供了一种新的声明变量的方式,这就是var。通过这个关键字,在声明变量时就无需指定类型了,变量类型是在初始化时由编译器确定的。

 

 
 

  一、用var定义变量

  在C#3.0中提供了一种新的声明变量的方式,这就是var。通过这个关键字,在声明变量时就无需指定类型了,变量类型是在初始化时由编译器确定的。代码如下:

varss="abcd";
MessageBox.Show(ss.GetType().ToString());

  上面的代码将显示System.String,从而证明  不过大家不要将var看成是javascript的var,它们的区别是,javascript是弱类型的语言,而且javascript中的变量(也包括用var声明的变量)可以变换类型,如下面的javascript所示:

vars="abcd";
s=3;
alert(s);

  上面的代码第一次给s赋了一个字符串,而第二行代码又给赋了一个整数。这样的代码在javascript中没有任何问题。但在C#3.0中,var变量一但被初始化,确定类型后,就无法改变类型了。如下面的代码是无法编译通过的:

varss="abcd";
ss=44;

  综上所述,在使用var定义变量时有以下四个特点:

  1.    必须在定义时初始化。也就是必须是var s = “abcd”形式,而不能是如下形式:

vars;
s=“abcd”;

  2.    一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。

  3.    var要求是局部变量。

  4.    使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。但笔者建议如果事先知道变量的类型,尽量使用强类型方式来声明变量。否则,就会造成由于大量使用var,而使得开发人员很难断定某个变量是什么类型。这样不利于程序的维护和升级。

posted @ 2009-02-15 02:24  yubinfeng  阅读(2026)  评论(0编辑  收藏  举报