在C#中基本类型比如List ,Dictionary,数组等都有委托来实现相关的操作。此时Lambda表达式就可以使用了.
实例1,查找字符串List的包含a的元素
代码
//字符串型的list
List lstInfo = new List() { "abc", "hello", "ok", "good", "bye" };
查询当前List每项包含o字符的所有项
在List这个基本类型有一个方法FindAll的基本方法
可以发现FindAll中使用了一个委托
参数 match 是一个 Predicate
public delegate bool Predicate(T obj);
Predicate是返回bool型的一个委托
最终的代码是
public static void DoTest4()
{
//字符串型的list
List lstInfo = new List() { "abc", "hello", "ok", "good", "bye" };
//查找当前list中的每一项包含o字符的
var lstNew = lstInfo.FindAll(x =>
{
if (x.Contains("o"))
{
return true;
}
else
{
return false;
}
});
foreach (string s in lstNew)
{
Console.WriteLine(s);
}
}
返回的结果是:
同样的方法,我们可以查看比如List的其他使用了委托的方法,都可以使用Lambda表达式来对List进行操作。
其他的方法,可以参考MSDN或者在当前的List的Find方法F1进行C#本身已经定义的方法参数
List.Find查找一个元素
List.Sort排序方法
另外说明一下,委托的作用就是将实现交给用户 ,本身只是起到一个关键返回结果的的作用,根据返回结果,对象根据结果进行相应的调整。