.net framework中引进的var对象类型声明
2010-12-22 00:00
381 查看
安装了vs 2008之后,在后台代码中,resharper插件对后台所有局部变量进行提示建议,显示需要采用"use implicitly typed local variable declaration",通过代码修改建议,发现有"use Var"的提示,通过字面含义,很快就能知道这是.net framework3.5中引进的新机制,即对局部变量进行自动类型设置,其类型取决于等号右边初始化的对象的类型。在网上查了一下相关解释,记录在此:
一、神奇的var
在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的 var类似,但也有不同。
1.相同点,他能够用var来声明任何类型的局部变量。
2.不同点,他仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。
二、相同点
他能够声明:
三、不同点
var仅仅是个关键字,他并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于:
四、注意点
1.在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式,假如有下面的语句:
编译时会报Implicitly typed locals must be initialized错误。
2.在使用var声明一个局部变量后,他仍然具备强类型,能够做如下测试:
编译时会报Cannot implicitly convert type string to int错误。
3. 初始化器表达式的编译期类型不能够是空(null)类型,编译器无法根据null来推断出局部变量的类型,如有下面的语句:
编译时会报Cannot assign <null> to an implicitly typed local错误。
4. 初始化语句必须是个表达式,初始化表达式不能包含他自身,但是能够是包含一个对象或集合初始化器的一个new表达式(即匿名类型)。 如能够这样去声明:
5. var的声明仅限于局部变量,也能够包含在foreach、for、using语句中。下面的使用是错误的:
编译时会报The contextual keyword var may only appear within a local variable declaration错误。
一、神奇的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错误。
相关文章推荐
- .net framework中引进的var对象类型声明
- .net framework中引进的var对象类型声明
- .net framework中引进的var对象类型声明
- c++ 父类成员函数的参数中有子类类型的对象 (前置声明解决)
- 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
- java继承实质、父类引用指向子类对象(多态)、声明时类型、运行时类型
- java继承实质、父类引用指向子类对象(多态)、声明时类型、运行时类型
- Objective-C 基础,类和对象,方法和消息,已声明的属性和存取方法,块对象,协议和范畴类,预定义类型和编码策略
- 隐式类型声明var
- JavaScript的小小总结!变量类型、对象声明、this用法、原型、匿名函数、闭包和自执行函数
- 能用foreach遍历访问的对象需要实现____接口或声明____方法的类型
- 如何将LINQ查询到的结果由匿名类型var转换成DataTable对象
- javascript 直接创建对象与间接创建对象 私有函数不能访问this变量 是否使用var声明变量几个问题探讨
- .net中用arcgis engine对象、AO接口类型声明属性,报错"new void()"
- 黑马-OC语法-self(关键字),“.”语法,声明对象等默认类型
- 为什么static成员的类型可以是类本身?又为什么非static成员被限定声明为其自身类对象的指针或引用?
- C#中利用var对局部变量的隐式类型声明
- 声明一个Object对象,然后强制转换成Dog类型并判断是否转换成功。
- 能用foreach遍历访问的对象需要实现____接口或声明____方法的类型
- 可选int参数'cid'存在,但由于被声明为基本类型而无法转换为空值。考虑将其声明为相应基元类型的对象包装。