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

推荐订阅源

博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
G
Google Developers Blog
B
Blog
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
The Cloudflare Blog
The Hacker News
The Hacker News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
雷峰网
雷峰网
F
Fortinet All Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
Last Week in AI
Last Week in AI
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
量子位
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
H
Help Net Security
Help Net Security
Help Net Security
P
Palo Alto Networks Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Troy Hunt's Blog
W
WeLiveSecurity
V
Vulnerabilities – Threatpost
T
The Exploit Database - CXSecurity.com
Know Your Adversary
Know Your Adversary
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
N
News | PayPal Newsroom
AWS News Blog
AWS News Blog
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
腾讯CDC
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
TaoSecurity Blog
TaoSecurity Blog
GbyAI
GbyAI
Y
Y Combinator Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
Docker

博客园 - 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。

与日俱进。