如何使用函数作为参数迭代 List<string> 传回每个字符串?
How do I iteratate a List<string> passing back each string using a Func as a parameter?
鉴于:
public void DoSomething(Func<List<string>, string> act){
foreach(var thing in [TheListPassedIn]){
act(thing);
}
}
获取名为 "act" 的参数列表的可寻址性的正确代码是什么?
您没有将字符串列表作为参数传递给该方法。你实际上传递了一个函数,它有一个 List 作为输入参数和 returns 一个字符串。没有具体涉及的字符串列表。
我认为你在这里混淆了一些东西。您的方法确实获得了一个参数,该参数是从列表到字符串的转换。这里根本没有清单。转换做了一些事情,但你必须在你的 DoSomething 方法中提出列表,并且可能以你的列表作为参数调用转换。如果这不是工作流程,那么您可能以错误的方式定义了您的方法!
您可以分别传入列表和函数,并使用 Linq 轻松创建新列表:
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());
鉴于:
public void DoSomething(Func<List<string>, string> act){
foreach(var thing in [TheListPassedIn]){
act(thing);
}
}
获取名为 "act" 的参数列表的可寻址性的正确代码是什么?
您没有将字符串列表作为参数传递给该方法。你实际上传递了一个函数,它有一个 List 作为输入参数和 returns 一个字符串。没有具体涉及的字符串列表。
我认为你在这里混淆了一些东西。您的方法确实获得了一个参数,该参数是从列表到字符串的转换。这里根本没有清单。转换做了一些事情,但你必须在你的 DoSomething 方法中提出列表,并且可能以你的列表作为参数调用转换。如果这不是工作流程,那么您可能以错误的方式定义了您的方法!
您可以分别传入列表和函数,并使用 Linq 轻松创建新列表:
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());