我正在尝试为列表的每个成员调用一个函数,但是将其他参数传递给该委托。
如果我有一个名为documents
的列表
List<string> documents = GetAllDocuments();
现在我需要迭代文档并为每个条目调用一个方法。我可以用
这样的东西来做documents.ForEach(CallAnotherFunction);
这需要CallAnotherFunction
具有类似
public void CallAnotherFunction(string value)
{
//do something
}
但是,我需要调用CallAnotherFunction
中的另一个参数,比如content
,这取决于调用列表。
所以,我的理想定义是
public void CallAnotherFunction(string value, string content)
{
//do something
}
我想将内容作为ForEach调用的一部分传递
List<string> documents = GetAllDocuments();
documents.ForEach(CallAnotherFunction <<pass content>>);
List<string> templates = GetAllTemplates();
templates.ForEach(CallAnotherFunction <<pass another content>>);
有没有办法可以实现这一点而无需定义不同的函数或使用迭代器?
答案 0 :(得分:9)
使用lambda表达式而不是方法组:
List<string> documents = GetAllDocuments();
documents.ForEach( d => CallAnotherFunction(d, "some content") );
List<string> templates = GetAllTemplates();
templates.ForEach( t => CallAnotherFunction(t, "other content") );
答案 1 :(得分:1)
使用lambda表达式:
string content = "Other parameter value";
documents.ForEach(x => CallAnotherFunction(x, content));