gpt4 book ai didi

C#:List.ForEach(...) 比普通 foreach 循环有什么好处?

转载 作者:IT王子 更新时间:2023-10-29 04:29:19 25 4
gpt4 key购买 nike

我想知道为什么 List<T>.ForEach(Action<T>)存在。

这样做有什么好处/区别吗:

elements.ForEach(delegate(Element element){ element.DoSomething(); });

结束

foreach(Element element in elements) { element.DoSomething();}

?

最佳答案

一个关键的区别是您可以使用 .ForEach 方法修改基础集合。使用 foreach 语法,如果你这样做,你会得到一个异常。这是一个例子(不是最好看,但它有效):

static void Main(string[] args) {
try {
List<string> stuff = new List<string>();
int newStuff = 0;

for (int i = 0; i < 10; i++)
stuff.Add(".");

Console.WriteLine("Doing ForEach()");

stuff.ForEach(delegate(string s) {
Console.Write(s);

if (++newStuff < 10)
stuff.Add("+"); // This will work fine and you will continue to loop though it.
});

Console.WriteLine();
Console.WriteLine("Doing foreach() { }");

newStuff = 0;

foreach (string s in stuff) {
Console.Write(s);

if (++newStuff < 10)
stuff.Add("*"); // This will cause an exception.
}

Console.WriteLine();
}
catch {
Console.WriteLine();
Console.WriteLine("Error!");
}

Console.ReadLine();
}

关于C#:List<T>.ForEach(...) 比普通 foreach 循环有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1924535/

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