c# 扩展方法奇思妙用】的更多相关文章

转载地址:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 刚看了篇文章 <Linq的Distinct太不给力了>,文中给出了一个解决办法,略显复杂. 试想如果能写成下面的样子,是不是更简单优雅: 1 2 var p1 = products.Distinct(p => p.ID); var p2 = products.Distinct(p => p.Name); 使用一个简单的 lamb…
# 扩展方法出来已久,介绍扩展方法的文章也很多,但都是笼统的.本人最近一直在思考扩展方法的应用,也悟出了一些,准备将这最近一段时间对扩展方法的思考,写成一个系列文章.每个文章只介绍一个应用方面,篇幅不会太长. 先声明一下,本系列文章主要为提供一个新的编程的思路(所提供的代码仅供参考,不足处请包涵),希望大家把讨论的重点放在编程思想上. 打算将文章写成三个部分:基础篇.高级篇.变态篇. 1.基础篇简单易懂,主要是一些常用操作. 2.高级篇会将扩展方法与泛型.委托.lambda表达式.反射.异步调用…
本文转载:http://www.cnblogs.com/ldp615/archive/2009/08/07/1541404.html 其中本人觉得很经典的:c# 扩展方法奇思妙用基础篇五:Dictionary<TKey, TValue> 扩展 地址:http://www.cnblogs.com/ldp615/archive/2011/01/28/1947205.html…
刚看了篇文章 <Linq的Distinct太不给力了>,文中给出了一个解决办法,略显复杂. 试想如果能写成下面的样子,是不是更简单优雅 var p1 = products.Distinct(p => p.ID); var p2 = products.Distinct(p => p.Name); 使用一个简单的 lambda 作为参数,也符合 Linq 一贯的风格. 可通过扩展方法实现: Distinct 扩展方法 首先,创建一个通用比较的类,实现 IEqualityComparer…
在Web开发中,jQuery提供了功能异常强大的$选择器来帮助我们获取页面上的对象.但在WinForm中,.Net似乎没有这样一个使用起来比较方便的选择器.好在我们有扩展方法,可以很方便的打造一个. 我们先看几个类图,深入认识一下我们常用的WinForm控件: 图1  ScrollableControl类图 图2  ButtonBase类图 图3  TextBoxBase类图 图4  ListControl类图 图5  Label类图 图6  其它常用 从图1中可以看出,Form与Button.…
下面是 Queryable 类 中最常用的两个排序的扩展方法: 1 2 public static IOrderedQueryable<TSource> OrderBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector); public static IOrderedQueryable<TSource>…
Dictionary<TKey, TValue>类是常用的一个基础类,但用起来有时确不是很方便.本文逐一讨论,并使用扩展方法解决. 向字典中添加键和值 添加键和值使用 Add 方法,但很多时候,我们是不敢轻易添加的,因为 Dictionary<TKey, TValue>不允许重复,尝试添加重复的键时 Add 方法引发 ArgumentException. 大多时候,我们都会写成以下的样子: var dict = new Dictionary<int, string>()…
http://www.cnblogs.com/ldp615/archive/2011/09/15/expression-extension-methods.html .net 中创建 Expression Trees 最简单的方式是使用 lambda 表达式: 1 2 Expression<Func<Person, bool>> exp = p => p.Name.Contains("ldp") && p.Birthday.Value.Ye…
语法注意点 可以使用扩展方法来扩展类或接口. 不能重写扩展方法. 扩展方法只能在非嵌套.非泛型静态类内部定义. 扩展方法必须定义在静态类中. 扩展方法的第一个参数的类型用于指定被扩展的类型,它限制该扩展方法只能作用于该类型. 扩展方法的第一个参数必须带有 "this" 修饰符. 调用方必须引入扩展方法的命名空间. 调用扩展方法的语法,与调用 "被扩展的类型上的实例方法" 的语法相同. 调用扩展方法时,无需传递第一个参数,因为该参数仅用于指定被扩展的类型. 扩展方法是…
对于一些现成的类,如果我们想添加一些新的方法来完善功能,但是不想改变已有的封装,也不想使用派生类,那么该怎么办呢?这里我们可以使用扩展方法. 一见钟情--初识扩展 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 我们首先来看个例子,有个直观的认识.一个现有的类User: public class User  {      string _name;      public User(string Name)      {          _n…