3

リストのすべてのメンバーに対して関数を呼び出そうとしていますが、追加のパラメーターをデリゲートに渡します。

というリストがある場合documents

List<string> documents = GetAllDocuments();

ここで、ドキュメントを繰り返し処理し、すべてのエントリに対してメソッドを呼び出す必要があります。次のようなものを使用してそれを行うことができます

documents.ForEach(CallAnotherFunction);

これには、 に次のCallAnotherFunctionような定義が必要です。

public void CallAnotherFunction(string value)
{
    //do something
}

CallAnotherFunctionただし、 call には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>>);

さまざまな関数を定義したり、反復子を使用したりせずにこれを達成する方法はありますか?

4

2 に答える 2

9

メソッド グループの代わりにラムダ式を使用します。

List<string> documents = GetAllDocuments();
documents.ForEach( d => CallAnotherFunction(d, "some content") );

List<string> templates = GetAllTemplates();
templates.ForEach( t => CallAnotherFunction(t, "other content") );
于 2013-04-10T09:32:56.703 に答える
1

ラムダ式を使用:

string content = "Other parameter value";
documents.ForEach(x => CallAnotherFunction(x, content));
于 2013-04-10T09:32:20.633 に答える