重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“Linq本质是什么”,在日常操作中,相信很多人在Linq本质是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linq本质是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
创新互联自2013年创立以来,先为白碱滩等服务建站,白碱滩等地企业,进行企业商务咨询服务。为白碱滩企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
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本质是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!