https://blog.csdn.net/zhuzhu837_1/article/details/8448083
先看下面的代码:
private static void Main()
{
var digitals = Enumerable.Range(0, 100000).ToList();
var list1= digitals.Select(s => s > 100).ToList() ;
//函数原型 public static IEnumerable<TResult> Select<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);
//Enumerable类的方法Select扩展接口( IEnumerable<TSource> )方法
// List 类继承了接口 IEnumerable<TSource> , 也可以使用接口的扩展方法
digitals.OfType<int>();
Enumerable.OfType<int>(digitals); // 等价 digitals.OfType<int>();
int a =0;
foreach(var mylist in list1)
{
Console.WriteLine($"{ mylist} ,{a}");
a++;
}
Console.ReadKey();
}
为什么这里会有一个this关键字,做什么用?其实这就是扩展方法!这个扩展方法在静态类中声明,定义一个静态方法,其中第一个参数定义可它的扩展类型。OfType方法扩展了接口( IEnumerable )方法,因为它的第一个参数定义了this IEnumerable source接口类型,为了区分扩展方法和一般的静态方法,扩展方法还需要给第一个参数使用this关键字。