VS2008&C#3.5语言特色系列[视频]:隐式类型的局部变量(Implicitly Typed Local Variables)

15 篇文章 0 订阅
14 篇文章 0 订阅
 编程语言可以分为两类:一种是强类型语言,譬如C#、JAVA、C++等,另外一类是弱类型语言,比如一些脚本语言javascript等。
强类型语言是,变量在使用前必须定义,类型之间区分比较明显,如果两个类型不相容,则不能隐式的转换,必须进行显示转换。
弱类型语言是,变量在使用前不要求必须定义,类型之间没有明显的界限,变量在使用时会自动转换为合适的目标类型。
也就是说,强类型语言的变量必须有明确的类型,如int、string等,而弱类型语言则没有这样的要求,譬如javascript中的类型都可以是var。C#3.5中引入了一个新的关键字"var",可以代表任何类型,但是不要认为C#在往弱类型语言靠拢,这里的"var"和javascript中的"var"有本质的区别。
在C#3.5中,如果有一个局部变量被声明为var,这个声明被视为隐式类型的局部变量(Implicitly Typed Local Variables)声明,然后由编译器根据等号右边的初始化表达式来推断变量的类型
var的使用注意以下几个方面:
1. 编译的时候,局部变量被编译为具体类型;根据等号右边的表达式,决定类型
2. 编译器自动判断和决定类型,var仅仅起占位符的作用;不同于object,var声明出来的是强类型,如下是错误的:
a)
 var integer  =   12345

b) 
integer  =   " http://www.fengzhiqiang.name " ;

3. 
var  s = null     // 错误!因为编译器不能判断出null的类型

4. 
var x;   // 错误,隐式类型的局部变量必须在声明的时候初始化

5. 编译器必须应该能够从等号右边推断出类型,初始化语句必须是一个表达式,初始化表达式不能包含它自身,不可以是对象或集合初始化器,但是可以是包含一个对象或集合初始化器的一个new表达式(即匿名类型)。
a) 
var MichaelFeng  = {“丰志强”,” http://www.fengzhiqiang.name”,”专注.NET”}     //错误
b)
 var MichaelFeng  =   new  [] "丰志强"" http://www.fengzhiqiang.name""专注.NET" } ;    // 正确

6. var的声明仅仅限于局部变量,也可以包含在foreach、for、using语句中。
static   void  loop()
        
{
            var MichaelFeng 
= new string[] "丰志强"," http://www.fengzhiqiang.name”, "专注.NET" };
            foreach (var i in MichaelFeng)
            
{   Console.WriteLine("MichaelFeng :{0}", i);  }
        }

7. Var不能作为方法的参数或者返回值
这句话错误:   
public  var MyMethod(var x, var y)  { }
但是下面的是正确的:
static   string  GetAnInt()
        
{   var retVal = “丰志强”;
            
return retVal;    }


隐式类型的局部变量深入分析(详情请参看视频)
1. 使用Console.WriteLine("MichaelFeng is : {0}", MichaelFeng.GetType().Name);
2. 使用ILDASM
3. 隐式类型的局部变量较多用在linq查询表达式的返回值,其他地方慎用(一方面给其他人阅读带来难度,另一方面给排错也带来问题),只用在不太容易判断类型的地方

视频下载:

VS2008&C#3.5语言特色系列视频:隐式类型的局部变量(第1部分,共2部分)

http://download.csdn.net/source/405984

VS2008&C#3.5语言特色系列视频:隐式类型的局部变量(第2部分,共2部分)

http://download.csdn.net/source/405987

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值