gpt4 book ai didi

c# - C# 中是否有 std::for_each 算法模拟(Linq to Objects)

转载 作者:行者123 更新时间:2023-11-30 13:51:09 25 4
gpt4 key购买 nike

在 C#(Linq to Objects)中是否有 std::for_each 算法模拟,以便能够通过 Func<>进去?喜欢

sequence.Each(p => p.Some());

代替

foreach(var elem in sequence)
{
elem.Some();
}

最佳答案

有一个foreach C# 语言本身的语句。

作为乔恩 hints (和 Eric explicitly states ),LINQ 设计者希望方法没有副作用,而 ForEach会违约。

实际上一个ForEachList<T> 中应用给定谓词的方法和 Array类,但它是在 .NET Framework 2.0 中引入的,而 LINQ 仅随 3.5 一起提供。他们没有关系。

毕竟,你总能come up with your own extension method :

public static void ForEach<T> (this IEnumerable<T> enumeration, Action<T> action)
{
foreach (T item in enumeration)
action (item);
}

我同意这在您已经有一个参数方法并且想为每个元素运行它的情况下很有用。

var list = new List<int> {1, 2, 3, 4, 5};
list.Where (n => n > 3)
.ForEach (Console.WriteLine);

但在其他情况下,我相信很好' foreach更简洁明了。

顺便说一句,单参数 void 方法不是 Func<T>但是一个Action<T> .
Func<T>表示返回 T 的函数和 Action<T>表示 void接受 T 的方法.

关于c# - C# 中是否有 std::for_each 算法模拟(Linq to Objects),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com