C# 如何迭代列表<;字符串>;使用Func作为参数传回每个字符串?

C# 如何迭代列表<;字符串>;使用Func作为参数传回每个字符串?,c#,function,lambda,delegates,C#,Function,Lambda,Delegates,鉴于: public void DoSomething(职能法案){ foreach(在[listpassedin]中的变量){ 行为(事); } } 获取名为“act”的参数列表的可寻址性的正确代码是什么?您不会将字符串列表作为参数传递给该方法。实际上,您传递了一个函数,该函数以列表作为输入参数,并返回单个字符串。这里没有具体的字符串列表。我想你在这里透露了一些东西。您的方法确实获得了一个参数,它是从列表到字符串的转换。这里根本没有列表。转换可以做一些事情,但是您必须在DoSomething

鉴于:

public void DoSomething(职能法案){
foreach(在[listpassedin]中的变量){
行为(事);
}
}

获取名为“act”的参数列表的可寻址性的正确代码是什么?

您不会将字符串列表作为参数传递给该方法。实际上,您传递了一个函数,该函数以列表作为输入参数,并返回单个字符串。这里没有具体的字符串列表。

我想你在这里透露了一些东西。您的方法确实获得了一个参数,它是从列表到字符串的转换。这里根本没有列表。转换可以做一些事情,但是您必须在DoSomething方法中列出列表,并且可能使用列表作为参数调用转换。如果这不是工作流,那么您可能以错误的方式定义了您的方法

您可以分别传入列表和函数,并使用Linq轻松创建新列表:

public void DoSomething(Func<List<string>, string> act){
   foreach(var thing in [TheListPassedIn]){
      act(thing);
   }
}

好的,让我们重新表述一下这个问题:动作方法是回调,函数更进一步,允许输入和输出。我希望外部方法传入一个列表,并且对于列表中的每个项目,我希望它回调所选的方法。特别是我想在呼叫端使用Lambda。谢谢Eagle Bike,我想这就是我想做的“在呼叫端使用Lamba”。。。
public List<string> ApplyFuncToEachItem(List<int> myList, Func<int, string> myFunc)
{
    return myList.Select(myFunc).ToList();
}
var numbers = Enumerable.Range(0,10).ToList();
var myListOfStrings = ApplyFuncToEachItem(numbers, n => "bla " + n.ToString());