如何在不迭代的情况下读取泛型列表的数据
本文关键字:读取 泛型 列表 数据 情况下 迭代 | 更新日期: 2023-09-27 18:36:45
我创建了一个这样的列表:
List<int> list = new List<int>();
list.Add(2);
list.Add(3);
list.Add(7);
现在,如果我想迭代它,我应该这样做:
foreach (int prime in list)
{
Console.WriteLine(prime);
}
我怎样才能用一行做到这一点?
您可以使用
List<T>.ForEach
list.ForEach(Console.WriteLine);
这使用方法组转换来创建Action<int>
来调用list
的每个元素的Console.WriteLine(int)
。
但是,我个人会使用现有的foreach
循环...它更清楚地表明,您期望循环的每次迭代都会产生副作用。埃里克·利珀特(Eric Lippert)有一篇很棒的博客文章,详细介绍了这种哲学上的反对意见。
这段代码是完全安全的 - 但更"聪明",当你阅读代码时,这几乎从来都不是一件好事。一目了然地问问自己更有可能理解哪些代码。
请注意,这不是根据问题标题"不迭代"访问列表中的数据 - 只是迭代在您的代码中不明显。它肯定仍然存在于ForEach
方法中。
您可以使用 ForEach:
list.ForEach(x => Console.WriteLine(x))