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

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
T
Threat Research - Cisco Blogs
小众软件
小众软件
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Tailwind CSS Blog
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
博客园 - 【当耐特】
C
Cybersecurity and Infrastructure Security Agency CISA
Hugging Face - Blog
Hugging Face - Blog
The Cloudflare Blog
The Last Watchdog
The Last Watchdog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
S
Secure Thoughts
O
OpenAI News
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Forbes - Security
Forbes - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
宝玉的分享
宝玉的分享
Scott Helme
Scott Helme
T
Tenable Blog
A
Arctic Wolf
L
LINUX DO - 热门话题
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Visual Studio Blog
Hacker News: Ask HN
Hacker News: Ask HN
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
博客园_首页
雷峰网
雷峰网
IT之家
IT之家
PCI Perspectives
PCI Perspectives
L
LINUX DO - 最新话题
H
Heimdal Security Blog

博客园 - 超子

My Development PC - II My Development PC - I 为Migrator.net制作一个可自动生成版本号的项目模板 La Maison en Petits Cubes Hone C# II Hone C# 卡壳 游戏开发学习 02 游戏开发学习 01 游戏开发学习 00 C#次大数的函数 语言学习开篇 - 写在前面 送同志们留念:动态指示条(Activity indicators) 送同志们留念:看看我们的MSDN China 都为我们作了些什么 热点杂记:Atlas Control Toolkits 更新 热点杂记:Asp.net 的演示视频 VS2005 中的 Template 热点杂记:Scott Guthrie 中文博客开通 送同志们留念:各种符号的英文名称
Hone C# III
超子 · 2009-04-01 · via 博客园 - 超子

Extension Methods (扩展方法)
--------------------------------------
Scott 这么说:扩展方法允许开发人员往一个现有的CLR类型的公开契约(contract)中添加新的方法,而不用生成子类或者重新编译原来的类型。扩展方法有助于把今天动态语言中流行的对duck typing的支持之灵活性,与强类型语言之性能和编译时验证融合起来。
 
扩展方法促成了好多有用的使用场景,并使在作为Orcas一部分发布的.NET版本中引进的非常强大的LINQ查询框架成为可能。
http://blog.joycode.com/scottgu/archive/2007/04/07/100611.aspx

泛型(Generic),方法代表(Func<TResult>...,Action<>...) 可以让我们们轻松的抽像方法,而通过Lambda Expressions(Expression Lambda Expressions & Statement Lambda Expressions)又让我们可以在调用这些抽象方法时为其编写具体逻辑。加上Extension Methods 我们就可以把这些方法和对象随需要结合起来。

场景举例:我需要为string提供一个PreEditAndPrint抽象行为,对字符串进行处理然后显示出来(在console app 里显示到控制台,在web app 里显示到page上,甚至会写入某个文本框)。那么我可以设计这样一个方法:

Code

Extension Methods 必须声明在静态类中(static class)并且需要在应用域应用该静态类。调用就很简单了

Code

拥有了前文中的这些特性,为c#提供一个Linq框架的大环境已经成熟了,为了使Linq变得elegant ,c#还提供了var,Object Initializers, and Collection Initializers等,而Linq框架也提供了专有名词到扩展方法的mechanical translation。这一切使得一个LINQ看起来就像下面的样子。

Code