您现在的位置: 365建站网 > 365文章 > 【转】vs2008 新特性 (3)

【转】vs2008 新特性 (3)

文章来源:365jz.com     点击数:617    更新时间:2009-09-18 10:24   参与评论

以下为为Asp.net 2008的新特性与新功能介绍。

VS 2008新特性与新功能介绍
图1

主要是关注于LINQ——我认为是VS 2008(.NET 3.5)中最令人兴奋的特性。LINQ使查询成为了.NET中头等的编程概念,被查询的数据可以是XML(LINQ to XML)、Databases(LINQ to SQL、LINQ to Dataset、LINQ to Entities)和对象(LINQ to Objects)。LINQ也是可扩展的,允许你建立自定义的LINQ数据提供者(比如:LINQ to Amazon、LINQ to NHibernate、LINQ to LDAP)。

广州网站建设C#3.0中的一些新的语言特性和改进:

C#3.0新特性

C#3.0中新引入的几个特性大多数都仅仅是“编译器技巧”或者“语法糖”,其实编译器生成的IL中间代码和原来的是一样的,这样他们就独立于framework和CLR运行时。但是,他们确实需要某些framework的支持,比如System.Core.dll程序集。这就是为什么扩展方法仍然需要依靠于System.Core.dll里包含的System.Runtime.CompilerServices.ExtensionAttribute。

另一方面,查询表达式只是实现了到扩展方法的映射,它包含在System.Linq, System.Data.Linq和System.Xml.Linq命名空间中。

属性:

public class Point {

private int _x, _y;

public int X {       

get { return _x; }

set { _x = value; }    }
public int Y {

get { return _y; }

set { _y = value; }   

}}

可以写为:

public class Point {
public int X { get; set; }
public int Y { get; set; }}

局部变量类型:

var num = 50;
var str = "simple string";
var obj = new myType();
var numbers = new int[] {1,2,3};
var dic = new Dictionary();

编译器会生成IL中间代码,就如同我们编译了下面的代码:

int num = 50;
string str = "simple string";
myType obj = new myType();
int[] numbers = new int[] {1,2,3};
Dictionary dic = new Dictionary();

对象初始化和集合初始化:

Point p = new Point();
p.X = 0;
p.Y = 0;

现在,使用对象初始化,就可以像这样子来重写:

Point p = new Point() { X = 0, Y = 0 };

这个特性也可以使用在集合上,看看下面这段示例:

List points = new List {
new Point { X = 2,  Y = 5 },
new Point { X = 1, Y = -10 },
new Point { X = 3, Y = 0 }};

 

查询语法查询表达式提供了一个语言集成的语法来查询,它特别像关系和层次查询语言比如SQL和XQuery。使用LINQ操作符(也就是from...where...select)写查询很方便,Visual Studio为它提供了很好的智能感知和编译时的检查支持。当C#编译器遇到了一个查询语法表达式时,实际上它会被转化为使用扩展方法和Lambda表达式的方法调用。

我们举一个例子来解释这个:

var result = from c in Customers  where c.City.StartsWith("B")
orderby c.LastName
select new { c.FirstName, c.LastName, c.Address };


上面的代码等价于:

 

var result = Customers.Where( c => c.City.StartsWith("B") )                  

.OrderBy( c => c.LastName  )          

.Select( c => new { c.FirstName, c.LastName, c.Address } );

使用查询语法的好处还有它会使代码更简单更易读。同时注意,查询表达式以from开头,以select或者group结尾。 

总结

C#3.0中新引入的几个特性大多数都仅仅是“编译器技巧”或者“语法糖”,其实编译器生成的IL中间代码和原来的是一样的,这样他们就独立于framework和CLR运行时。但是,他们确实需要某些framework的支持,比如System.Core.dll程序集。这就是为什么扩展方法仍然需要依靠于System.Core.dll里包含的System.Runtime.CompilerServices.ExtensionAttribute。

另一方面,查询表达式只是实现了到扩展方法的映射,它包含在System.Linq, System.Data.Linq和System.Xml.Linq命名空间中。

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (617人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号