.net framework中引进的var对象类型声明
来源:互联网 发布:奢侈品拍卖软件 编辑:程序博客网 时间:2024/06/06 02:20
安装了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 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对象类型声明
- C#中利用var对局部变量的隐式类型声明
- js中var声明和不加var的区别
- C#变量声明中var的使用
- js中var的重复声明
- .NET Framework 2.0 类型库中新增的常用功能
- 使用.NET Framework中新的日期时间类型
- ADO.NET Entity Framework中对分离对象的更新
- javascript中必须使用var声明局部变量的情况
- java中var类型
- Node.js 中 变量声明 带var 和不带var 的情况
- JavaScript中变量声明有var和没var的区别
- 在Javascript中 声明时用\"var\"与不用\"var\"的区别
- 在Javascript中 声明时用"var"与不用"var"的区别
- 在Javascript中 声明时用"var"与不用"var"的区别
- JavaScript中声明变量时 带var和不带var的区别
- JavaScript中变量声明有var和没var的区别示例介绍
- 在Javascript中 声明时用"var"与不用"var"的区别
- TextMate简易破解
- How to open the dialog out of iframe by using jquery dialog
- HEAP CORRUPTION DETECTED
- 【学习】ASP.NET应用工程与ASP.NET站点两种项目类型之间的几点区别
- 置换与转置
- .net framework中引进的var对象类型声明
- Java反射机制和Class
- 超实用~外企必备:英文电子邮件高频句(转)
- uboot之start.s分析
- JAVA事件及监听器
- 现实世界的Windows Azure:采访Threeplicate创始人之一Dario Solera先生
- int main(int argc,char* argv[])详解
- 利用JQuery实现点击某个表格时出现下拉及修改其信息
- 如何使用adb命令查看android中的数据库