C# 3.0新特性系列:隐含类型var

  C# 3.0新特性系列:隐含类型var

一.神奇的 var
C#3.0 中增加了一个变量声明 var ,这个声明和 JavaScript var 类似,但也有不同。
1.      相同点,它可以用 var 来声明任何类型的局部变量。
2.      不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。
二.相同点
它可以声明
var integer = 10;
var name = "edisundong";
var numbers = new int[] { 1, 2, 3 };
三.不同点
var 仅仅是一个关键字,它并不是 C#3.0 中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于
int integer = 10;
string name = " edisundong ";
int [] numbers = new int[] { 1, 2, 3 };
三.注意点
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 typed local 错误。
4. 初始化语句必须是一个表达式,初始化表达式不能包含它自身,但是可以是包含一个对象或集合初始化器的一个 new 表达式 ( 即匿名类型 )
如可以这样去声明:
var coll = new Hashtable();
5. var 的声明仅限于局部变量,也可以包含在 foreach for using 语句中。下面的使用是错误的:
class Program
{
    private var i = 10; // 全局私有变量。
    static void Main(string[] args)
    {
        
    }
}
编译时会报 The contextual keyword 'var' may only appear within a local variable declaration 错误。
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值