中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > Web开发 > .NET > C#.NET
C#3.0新特性之隐式类型局部变量的使用
作者:未知 时间:2006-08-19 01:52 出处:天极网 责编:月夜寒箫
              摘要:C#3.0新特性之隐式类型局部变量的使用
  首先说明一下,此新特性的专题基于MS五月份分布的C#3.0规范,但是官方中文版还没有出来,结合自己的实践和理解,希望能和大家一起分享某些前沿的东东,很有可能一些地方会出错,望抛砖。

  在C# 3.0里面, 可以对局部变量进行隐式类型声明, 就是在声明时可以不指定该变量的类型, 变量在初始化的时候会由编译器从表达式的上下文中推出真正的类型, 对开发者来说, 无疑是简化了很多, 主要是通过新的关键字var, 有如下面的例子:

var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] {1, 2, 3};
var orders = new Dictionary<int, Order>();

  其实上面的声明方法和之前在1.x和2.x中以下的声明方法是等效的:

int i = 5;
string s = "Hello";
double d = 1.0;
int[] = new int[] {1, 2, 3};
Dictionary<int, Order> orders = new Dictionary<int, Order>();

  方便是绝对的, 就像我们之前在某些别的高级语中, 早就实现了此功能, 但是对某局部变量进行隐式类型声明, 也要遵循一定的条件限制:

  - 声明变量时, 必须对该变量进行初始化.

  - 初始化该变量时, 必须使用对应的表达式, 而不能简单地用一个对象或是集合本身, 但如果是使用了关键字new创建的对象或是集合却是合法的, 因为那已经是一个表达式了.

  - 变量初始化的表达式在编译时, 绝对不可以是null类型.

  - 如果将要进行隐式类型声明的局部变量包含多个声明, 则要保证每个初始化表达式都有相同的编译时类型, 保持类型一致, 不能一会是int, 一会又变成了int[].

  下面我们来看几个有误的声明例子:

  例子1:

var x; //声明变量时没有初始化

  例子2:

var y = {1, 2, 3}; //集合本身不能作为初始化表达式

  例子3:

var z = null; //编译时类型不允许为null

  在现行的Orcas编译环境下, 可以使用var声明局部变量, 同时也向后兼容, 即原来的方式是可用的. 另外, 根据MS官方的文档说来, var声明适用于for语句的初始化表达式中, 在using语句中资源获得时也可用, 举个例子可以在foreach语句中的迭代变量应用var:

var numbers = int[] { 1, 3, 5, 7, 9};
foreach(var n in numbers) Console.WriteLine(n);

  不过这样用的前提要求该集合类型必须可以枚举, var就可以自动被编译器认作int类型了。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有