惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
Recent Announcements
Recent Announcements
L
LangChain Blog
B
Blog
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
D
Docker
WordPress大学
WordPress大学
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The GitHub Blog
The GitHub Blog
博客园 - 叶小钗
Last Week in AI
Last Week in AI
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog
博客园 - Franky

博客园 - Sangplus

[转]C#单进程解决方案 extern alias 英语面试常用语 【转】FLASH轮换广告源码 走马灯的js代码 C#之扩展方法学习 使用非托管代码进行字节数组的快速拷贝 c#复习——虚方法、重写方法和抽象方法(官方解释) vs2005工具栏重置 一种实用的页面传参方法 所有HTTP状态代码及其定义 ASP.NET验证控件祥解[转] C#制作WinForm控件[转] 关于web.config的读写管理 关于SqlServer2005开发者版不同电脑之间的连接问题 JavaScript中有时候需要给this起一个别名。 不知不觉代码已经超过1万行了 关于RequiredFieldValidator的怪异现象 javascript添加下拉列表和速度有关系吗?
让Enumerable可以具有each方式的语法。
Sangplus · 2010-02-02 · via 博客园 - Sangplus

这两天刚学Linq,发现Linq语法中的Any,All使用起来比较简洁。此时想起来js库中的each语法吗,确实比较好用。那么我们能否在C#达到类似的效果呢?经过一阵探索,发现强大的C#确实可以实现。

第一条路,看看有没有现成的

首先,我要看看C#本身是否支持该功能呢(要是支持,我的努力岂不是白费了),尝试多次,C#本身不具有该该语法的支持。而且Baidu(Google已经放弃我们了,我也决定放弃它了)到的一片文章《Allow linq-ified 'for each' statements》中貌似可以看到,到目前为止,甚至在C#4.0之前,我们没有这个希望了。于是我尝试自己来实现。

第二条路:自己实现。

查看了一下Linq中Any和All的语法,发现,原来他们都是利用C#本身的特性实现的,其格式如下:

public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

于是我经过改头换面,终于实现了我自己的Each方法如下,

1         public static void Each<TSource>(this IEnumerable<TSource> source, Action<TSource> execute)
2         {
3             foreach (var ts in source)
4             {
5                 execute(ts);
6             }
7         }

这样,我可以采用Each语法了,如下是我的例子:

1 trList.Each(tr => staticRankInfo.Add(new StaticRankRow(tr)));

哈哈,原来如此简单,以后这就是我就要用这个语法来代替foreach语句了。

其实大家可以实现其它更加花哨的功能。

PS:与日俱进,哈哈,今天学习Linq发现其实人家早就有这个语法了,叫ForEach。

与日俱进。