当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C# 3.0语言详解之基本的语言增强

ASP.NET
FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用方法
.NET 常用功能和代码小结
在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出
asp.net IList查询数据后格式化数据再绑定控件
asp.net sql存储过程
asp.net 简单实现禁用或启用页面中的某一类型的控件
asp.net(c#)获取内容第一张图片地址的函数
The remote procedure call failed and did not execute的解决办法
ASP.NET 在线文件管理
asp.net 读取并修改config文件实现代码
ASP.NET Cookie 操作实现
asp.net Silverlight中的模式窗体
Silverlight中动态获取Web Service地址
asp.net Silverlight应用程序中获取载体aspx页面参数
asp.net 水晶报表隔行换色实现方法
asp.net 获取Gridview隐藏列的值
手动把asp.net的类生成dll文件的方法
asp.net 使用ObjectDataSource控件在ASP.NET中实现Ajax真分页
动态指定任意类型的ObjectDataSource对象的查询参数
asp.net Md5的用法小结

ASP.NET 中的 C# 3.0语言详解之基本的语言增强


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 33 ::
收藏到网摘: n/a

Linq项目简介和开发环境的搭建  

  9月份,微软推出了一项名为“Linq项目”的新技术,用于在.NET语言中集成数据查询的功能。您可以从http://msdn.microsoft.com/netframework/future/得到Linq项目的技术预览版,其中包括大量的介绍文章(英文)和C# 3.0以及VB 9.0的编译器。  

  Linq项目英文全称为Language Integrated Query,即“语言集成查询”。Linq基于.NET Framework 2.0,通过对语言的改进,实现在直接在语言中通过类似SQL语句的构造对数据源进行查询,可查询的数据源从基本的顺序结构(如数组和链表)延伸到关系型数据库(目前是SQL Server,相信将来可以扩展到几乎所有的关系型数据库)和XML。  

  C# 3.0是C#语言再一次升级后的版本,率先实现了Linq的概念;同样实现了Linq的还有VB 9.0。从上面提到的网址,读者可以找到两种语言的编译器的技术预览版。在本文中我们将以C# 3.0为中心讨论其开发环境的搭建和语言改进。下载得到的是一个名为“linq preview.msi”(也可能不同)的安装包,双击之后可以和其他软件一样进行安装,此处不再赘述。该安装包为Visual Studio 2005 Beta 2及以后的版本和Visual C# 2005 Beta 2提供了插件(项目模板)和C#编译器,该编译器生成的IL代码可以直接在.NET Framework 2.0上运行。在安装了该预览版后,在新建项目对话框中项目类型列表的Visual C#节点下,我们可以看到一个Linq Preview的条目,并可以在右边的项目模板中选择一些桌面项目模板(Linq暂时还不支持Web项目)。  
只要选中了Linq中的项目模板,我们就可以像编写其他应用程序一样在Visual Studio 2005中开始编写C# 3.0应用程序了,在编译的时候IDE会自动为我们选择C# 3.0的编译器。  

  现在我们已经可以开始编写C# 3.0应用程序了,后面的章节中我就将为大家讲解C# 3.0所带来的语言增强。值得说明的一点是,本文是一个系列文章中的一篇,这一系列文章共三个部分。本文为第一部分,讲述C# 3.0种基本的语言增强,这些语言增强其实是其他两个部分的基础;第二部分将讲述C# 3.0中的Lambda表达式,这是匿名方法的自然进化形式,它不仅能将表达式体现为可执行的方法(委托),也能将表达式体现为可以在运行时进行操作的数据结构——表达式树;最后一部分讲述的才是Linq项目中最核心的也是最激动人心的内容——查询表达式,这是Linq在C#中的实现形式。同时,Linq还针对SQL查询和XML查询对.NET Framework基础类库进行了扩充,分别称作DLinq和XLinq,这些内容我将在其他系列文章中为大家讲述。  

  在本文的讲述过程中,限于篇幅,仅提供了简短的代码段而不是完整的代码。不过这些代码段是从完整的、可正确编译和运行的代码中抽取出来的,这些完整代码可以从这里下载,并且在本文的第5部分中有关于完整代码的介绍。  

具有隐式类型的声明 

  在一个带有初始化器的声明语句中,待声明的变量的类型是显而易见的——和初始化表达式的结果类型一致。对于这种情况,在C# 3.0中可以使用新增的关键字var来代替声明中的类型,而由编译器根据初始化表达式来推断出变量的类型。 

var i = 5; // int 
var d = 9.0; // double 
var s = "Hello"; // string 
var a = new int[] { 1, 2, 3, 4, 5 }; // int[] 

Console.WriteLine("Type of variable : {0}", i.GetType()); 
Console.WriteLine("Type of variable : {0}", d.GetType()); 
Console.WriteLine("Type of variable : {0}", s.GetType()); 
Console.WriteLine("Type of variable : {0}", a.GetType());  

  上面的代码在C# 3.0中是符合语法规则的,前四行代码就是使用了隐式类型的声明;而后四行代码用于在运行时验证各个变量是否拥有正确的类型。如果在Visual Studio 2005中运行这段代码(为了能够看到结果,请使用Ctrl+F5来编译并启动程序),会得到下面的结果: 

Type of variable : System.Int32 
Type of variable : System.Double 
Type of variable : System.String 
Type of variable : System.Int32[]  

  这表明,编译器在编译的时候,已经正确地推断了每个变量的类型,并将其嵌入到了程序