首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 正文

Linq之C#3.0语言扩展

        为了让Linq的查询语法更接近于C#和VB.NET, C# 3.0和VB.NET 9.0基于的模板、匿名方法和迭代器都是LINQ的重要组成部分,其中包括了以下的重要特性:

        1.隐藏类型的本地变量

        C# 3.0提供了一个新的关键子var,这样程序员就可以不需要明确的定义一个本地变量,而是由编译器根据表达式来初始化该变量。比如: var name="Linq";通过该项特性,不再需要重复本地变量的类型,编译器会自动的推动类型,同时支持强类型。而且可以省去在foreach循环中定义迭代器类型

        2.对象初始化程序

        该特性让我们能够在对象定义的时候就给相应的字段和属性赋值.例如:

             class Person
            {
                ......
                public string Name { get; set; }
                public int Age { get; set; }
                public string Nation { get; set; }
                ......
            }

        通过该特性就可以在一句声明语句中初始化该变量

         var linq = new Person { Name = "Linq", Age = "2", Nation = "USA" };

        对于集合也是一样:

             ......
            var linqs = new List<Person>[]{
                        new Person{Name="Linq to SQL",Age=1,Nation="USA"},
                        new Person{Name="Linq to XML",Age=2,Nation="UK"},
                        new Person{Name="Linq to DataSet",Age=3,Nation="GR"}
                    };
            ......

        就类似于用Add方法添加对象。但是要注意必须是实现了IEnumerable接口和提供了Add方法的类.

        3.Lambda表达式

        linq            =>         linq.Age == 2

        (输入参数)   (操作符)   (表达式或是声明模块)

        在没有定义参数类型的情况下,输入参数为隐藏类型。当然可以定义具体类型,比如(Person linq)

        4.扩展方法

        其实最简单的实现就是在第一个参数前加上this关键字。因为this关键字指示编译器把该方法作为扩展方法对待。但是扩展方法必须是声明在非模板静态类。

        5.匿名类

        其实匿名类只是没有类型名称而已,而实际的类型则由编译器在创建时确定.例如:

         var linq=new{"SQL to Object",4,"CN"};

        该特性的好处是在快速返回简单的临时结果,有利于开发。但是也有它的局限性在里面。主要是不能够利用强类型的方式进行类的操作,同时不能用作方法的返回值(除非该方法的返回值是Object类型)。还有就是在C#中匿名类是不可变的,也就是一旦创建就不能改变当中的属性值。

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航