List<T>.Find的定义为:
public T Find (Predicate<T> match)
Predicate的定义为
public delegate bool Predicate<T> (T obj)
当前 List 的元素被逐个传递给 Predicate 委托,并在 List 中向前移动,
下面的代码可以找出名为jeep的Car
public class CarList
{
List<Car> carList = new List<Car>();
Car jeep = carList.Find(FindJeep)
private static bool FindJeep(Car car)
{
ret car.Name = “jeep”;
}
}
假设要找出和updateCar的Name相同的Car,改如何实现FineCarWithSameName方法?
public void Update(Car updateCar)
{
Car carFound = carList.Find(FineCarWithSameName);
}
问题在于在FineCarWithSameName方法中不能访问变量updateCar,此时使用匿名方法就可以解决:
public void Update(Car updateCar)
{
Car carFound = carList.Find(
delegate(Car car)
{
return car.Name == updateCar.Name;
});
}