我正在阅读一些代码并看到以下内容:
Method.Find(delegate(Department depts) {
return depts.Id == _departmentId; });
T Find
方法有以下描述:
public T Find(Predicate<T> match);
// Summary:
// Searches for an element that matches the conditions defined by the specified
// predicate, and returns the first occurrence within the entire
// System.Collections.Generic.List<T>.
//
// Parameters:
// match:
// The System.Predicate<T> delegate that defines the conditions of the element
// to search for.
// (...)
是否可以重写此方法以将lambda表达式作为参数,如果是,如何?
答案 0 :(得分:5)
如果要将lambda表达式传递给它,已经已接受lambda表达式。
该方法只是表明它接受委托。有几种方法可以定义委托:
Find(a => true)
)Find(someNamedMethod)
Find((Predicate<Whatever>)Delegate.CreateDelegate(typeof(SomeClass), someMethodInfo))
)答案 1 :(得分:1)
无需重新编写方法,您可以使用lambda,如下所示:
Method.Find(x => x.Id == _departmentId );
您提供的代码是匿名代表
Method.Find(delegate(Department depts) {
return depts.Id == _departmentId; });
lambda是一个匿名函数。