我应该在接线员的右边写什么?

What should I write on right of the operator?

我正在尝试使用 Func<> 对列表项进行平方,并 return 对平方项列表进行平方。接线员右边应该写什么? 我应该写一个 foreach 循环来遍历列表中的项目吗?我是初学者。真是一头雾水

List<int> myintList = new List<int> { 1, 4, 5, 6 };

Func<List<int>, List<int>> SquareList = (m) => 

在您的 lambda 表达式中,mList<int>。您需要 return 另一个 List<int> 并对每个原始值应用一个操作。

您可以使用 LINQ 的 Select to do that, and ToList 将结果转换为 List<T>。这是 'functional' 方法,它比替代方法更清晰,因为它更侧重于 'what' 而不是 'how'.

m => m.Select(x => x * x).ToList();

有关演示,请参阅 this fiddle。为了比较,命令式替代可能会这样写:

Func<List<int>, List<int>> SquareListImperative = source => 
{
    var results = new List<int>();

    foreach (var item in source)
    {
        results.Add(item * item);                           
    }

    return results;
};  

如果您是初学者,您应该阅读 Linq。它会让您的生活轻松 100 倍,更有趣。

List<int> myintList = new List<int> { 1, 4, 5, 6 };

var squareList = myintList.Select(i => Math.Sqrt(i));

你可以试试

Func<List<int>, List<int>> SquareList = (m) => m.Select(val => val * val).ToList();

这么多实现方式..要考虑的一点是数据量驱动的正确选择

var sqlst = myintList.ConvertAll<int>(t => t * t);

仍然出于某种原因,如果您需要 Func 其他方法..

List<int> myintList = new List<int> { 1, 4, 5, 6 };
Func<List<int>, List<int>> SquareList = (m) =>
{
 return m.ConvertAll(x => x * x);
};
var tt = SquareList(myintList);