本文向大家介绍Linq本质,可能好多人还不了解Linq本质,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。
创新互联10多年成都企业网站建设服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站建设及推广,对格栅板等多个领域拥有丰富建站经验的网站建设公司。
本文的目的是帮助大家搞清楚C#3.0里面的Linq查询表达式的来龙去脉,搞清楚以后对C#3.0的新特性基本上也就了然于胸了。建议大家看完Linq查询后再看各个语法新特性对Linq的意义,这样会更加有帮助一些。
1.匿名类型
- private static void AnonymousType()
- {
- var v = new { Name = "张三", Sex = true };
- //无须显示声明一个类,而且在初始化器里面可以获取上下文的变量——闭包
- Console.WriteLine(v.Name);
- }
Linq本质:有了匿名类型后我们不需要显示的声明一个类型了,这个类型由C#编译器自动生成,而且利用了初始化器和var的新特性对Linq的意义:和初始化器结合起来构造查询结果集合里面的新元素类型。
2.扩展方法
比如我们现在想给int类型增加(扩展)一个方法,判断一个整数自身是否偶数,我们期望的语法是这样的:
- private static void ExtendMethod()
- {
- int i = 2;
- Console.WriteLine(i.IsEven());
- }
注意原来int原来是没有IsEven()这个方法的,要实现这个方法,必须写一个静态类和一个静态方法:
- static class MyExtention
- {
- public static bool IsEven(this int num)
- //this 表示针对int的实例和索引器的this的含义是一样的,int表示给int这种类型进行扩展
- {
- return num % 2 == 0;
- }
- }
Linq本质:编译i.IsEven()的本质是C#编译器生成了了MyExtention.IsEven(i)的代码,实际上仍然没有破坏类型的结构,并不是真的象语法那样平白无故给int增加了一个IsEven()方法,和设计模式里面的Visitor模式动态注入方法还是有区别的。
分享标题:Linq本质简单分析
文章网址:http://www.36103.cn/qtweb/news29/33429.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联