如何在不迭代的情况下读取泛型列表的数据

本文关键字:读取 泛型 列表 数据 情况下 迭代 | 更新日期: 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))