在说扩展方法之前先说一个例子:
把集合中字符串小于“7”,查询出来,然后打印
static void Main(string[] args)
{
//将字符串小于7的筛选出来
List<string> list = new List<string>() {
"23","7","66","8"
};
var temp=
list.Where(a=>a.CompareTo("7")<0);
foreach (var item in temp)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
where方法内部:遍历list集合,然后把每个元素传到委托里面执行,如果委托返回true
那么把元素选择出来,最后把满足条件的元素一起返回。
我们需要自己写一个MyWhere方法,模仿它的where,来学习扩展方法。
//this指的是扩展哪个方法,紧跟着是传进来的委托
public static List<string> Mywhere(this List<string> list,Func<string,bool> funcWhere)
{
List<string> result = new List<string>();
//遍历集合,集合里面的值都执行一遍委托方法
foreach (var item in list)
{
if (funcWhere(item))
{
result.Add(item);
}
}
//最后返回选择出来的集合
return result;
}
从这里我们可以得到扩展方法的一般写法:
1.静态类
2.静态方法
3.this关键字