C# 语法 - Lambda 表达式示例 - 对泛型列表的 ForEach()

27 浏览
0 Comments

C# 语法 - Lambda 表达式示例 - 对泛型列表的 ForEach()

首先,我知道在框架中已经有一些方法可以迭代List<>

但是,作为一个例子,正确的语法是什么,可以编写一个ForEach方法来迭代List<>中的每个对象,并在每个对象上执行Console.WriteLine(object.ToString())

它需要将List<>作为第一个参数,将lambda表达式作为第二个参数。

我看过的大多数示例都是作为扩展方法或涉及LINQ。我正在寻找一个普通的方法示例。

0
0 Comments

问题的出现原因:

问题的提出者想要了解在使用泛型时,基本的C# lambda语法的用法。

解决方法:

在给定的示例代码中,将整数数组转换为泛型列表,并使用ForEach()方法对列表中的每个元素执行lambda表达式。lambda表达式用于将元素打印到控制台。

以下是解决问题的示例代码:

int[] numbers = { 1, 2, 3 };
numbers.ToList().ForEach(n => Console.WriteLine(n));

需要注意的是,ToList()方法的时间复杂度为O(n),可能会对性能产生影响。

0
0 Comments

问题的出现原因是提问者想要知道如何编写一个方法(而非如何调用它),并且指定不使用LINQ或扩展方法。

解决方法是使用Lambda表达式结合ForEach()方法对泛型列表进行操作。具体代码如上所示,首先创建一个泛型列表并用IEnumerable填充,然后调用列表对象的ForEach()方法。

然而,这种方法的效率可能不高。因为它需要创建一个新的列表,并可能需要额外迭代一次原始的items集合。因此,在大多数情况下,这种方法的开销可能是不值得的。

0
0 Comments

问题的出现原因:在这段代码中,使用了一个lambda表达式作为参数传递给ForEach()方法,但是读者可能对lambda表达式的语法和用法感到困惑,特别是在比较Func<>和Action<>委托时。

解决方法:在这种情况下,可以通过解释lambda表达式的语法和用法来帮助读者理解代码。同时,还可以进一步解释Func<>和Action<>委托的区别和用法。

文章内容如下:

C#语法 - Lambda表达式示例 - 对泛型列表进行ForEach()操作

下面是一个使用lambda表达式的示例,用于在泛型列表上执行ForEach()操作:

public void Each(IEnumerable items, Action action)
{
    foreach (var item in items)
        action(item);
}

通过以下方式调用它:

Each(myList, i => Console.WriteLine(i));

很酷。现在,我在其他地方看到的Func<>语法是什么意思呢?

Func<>委托是带有返回值的泛型委托。Action<>委托是用于不带返回值的方法的泛型委托。这是它们之间唯一的区别。

所以在你的例子中,你不需要返回任何东西(因为Console.WriteLine不返回任何值),所以Action就足够了。

另外,你可以使用方法组"Console.WriteLine"而不是lambda表达式"i => Console.WriteLine(i)"。

希望这篇文章能帮助你理解如何使用lambda表达式和泛型委托来对泛型列表进行ForEach()操作。如果你有任何疑问,请随时提问。

0