您的位置:首页 > Web前端 > JavaScript

C#中的var用法以及和JavaScript中的var的区别

2012-11-05 11:55 489 查看
C#中的var用法:

1.  var是3.5新出的一个定义变量的类型其实也就是弱化类型的定义;

2.  var可代替任何类型编译器会根据上下文来判断你到底是想用什么类型的;

3.  至于什么情况下用到var,我想就是你无法确定自己将用的是什么类型就可以使用var;

4.  类似obeject但是效率比obeject高点使用var定义变量时有以下四个特点:

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

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

·        var要求是局部变量。

·        使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。

C#中的var和JavaScript中的var比较:

  I.在C#3.0中增加了一个变量声明var,这个声明和JavaScript的var类似,但也有不同。

        1. 相同点,它可以用var来声明任何类型的局部变量。

        2. 不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。

  II.相同点

      它可以声明

            var integer = 10;

            var name ="edisundong";

            var numbers = new int[] { 1,2, 3 };

  III.不同点

       var仅仅是一个关键字,它并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于

            int integer = 10;

            string name = "edisundong ";

            int[] numbers = new int[] {1, 2, 3 };

IV.注意点

        1.在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式,如果有下面的语句:

                 var integer;

                 integer = 10;

          编译时会报Implicitly typed locals must be initialized错误。

        2.在使用var声明一个局部变量后,它仍然具有强类型,可以做如下测试:

                 var integer = 10;

                 integer = "edisundong ";

          编译时会报Cannot implicitly convert type 'string' to 'int'错误。

        3.初始化器表达式的编译期类型不可以是空(null)类型,编译器无法根据null来推断出局部变量的类型,如有下面的语句:

                 var integer = null;

          编译时会报Cannot assign '<null>' to an implicitly typedlocal错误。

        4.初始化语句必须是一个表达式,初始化表达式不能包含它自身,但是可以是包含一个对象或集合初始化器的一个new表达式(即匿名类型)。

          如可以这样去声明:

                 var coll = newHashtable();

        5.var的声明仅限于局部变量,也可以包含在foreach、for、using语句中。 下面的使用是错误的:

                 class Program

                {

                 privatevar i = 10; //全局私有变量。

                 staticvoid Main(string[] args)

                {}

                }

          编译时会报The contextual keyword 'var' may only appear within a local variable declaration错误。

            6.var 不能用作方法的参数和返回类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C#中的var
相关文章推荐