栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

C#Lambda表达式:为什么要使用它们?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#Lambda表达式:为什么要使用它们?

Lambda表达式是匿名委托的更简单语法,可以在可以使用匿名委托的任何地方使用。但是,事实并非如此。可以将lambda表达式转换为表达式树,这使LINQ
to SQL有了很多魔力。

以下是LINQ to Objects表达式的示例,该表达式使用匿名委托然后使用lambda表达式来显示它们在眼睛上有多容易:

// anonymous delegatevar evens = Enumerable     .Range(1, 100)     .Where(delegate(int x) { return (x % 2) == 0; })     .ToList();// lambda expressionvar evens = Enumerable     .Range(1, 100)     .Where(x => (x % 2) == 0)     .ToList();

Lambda表达式和匿名委托比编写单独的函数有一个优势:它们实现闭包,可以使您将局部状态传递给函数,而无需向函数添加参数或创建一次性对象。

表达式树是C#3.0的一项非常强大的新功能,它使API可以查看表达式的结构,而不仅仅是获取对可以执行的方法的引用。API只需将委托参数转换为

expression<T>
参数,编译器将从lambda而不是匿名委托生成表达式树:

void Example(Predicate<int> aDelegate);

叫做:

Example(x => x > 5);

变成:

void Example(expression<Predicate<int>> expressionTree);

后者将传递描述该表达式的抽象语法树的表示形式`x

5`。LINQ to SQL依靠这种行为能够将C#表达式转换为服务器端进行过滤/排序等所需的SQL表达式。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/506846.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号