扩展方法在静态类中生命,定义为一个静态方法,其中第一个参数定义了它所扩展的类型;
public statirc class StringExtension{ public static void Foo(this string s) { WriteLine($"Foo invoked for {s}"); }}
第一个参数定义了String类型,多使用this 用于区分与一般的静态方法;
使用方法
string s = "Hello";s.Foo();
输出:“Foo invoked for Hello",
定义Linq扩展方法的一个类是System.Linq名称空间中的Enumerable。 System.Core.dll 中
IEnumerable<TSource>.Where() 实现方法:
public static IEnumerableWhere (this IEnumerable source, Func predicate){ foreach(TSource item in source) if(predicate(item)) yeild return item;}
第一个参数:this IEnumerable<TSource> souce 声明属于IEnumerable<TSouce>的扩展方法;
第二个参数: Fucn<TSouce, bool> predicate 属于委托,表示接收TSource类型的参数,返回bool类型的方法;