在不使用 ForEach 循环的情况下遍历列表

Posted

技术标签:

【中文标题】在不使用 ForEach 循环的情况下遍历列表【英文标题】:Iterating through a list with out using ForEach loop 【发布时间】:2013-02-27 07:47:39 【问题描述】:

我有一个字符串列表:

var list = new List<string> "apples","peaches", "mango";

有没有办法在不使用 foreach 循环的情况下遍历列表并在控制台窗口中显示项目,可能是使用 lambda 和委托。

我希望输出如下所示:

以下水果可供选择: 苹果 桃子 芒果

【问题讨论】:

为什么要在没有foreach 的情况下这样做? 这是一个提示:检索长度并从 0 迭代到长度 -1 有很多方法可以做到这一点。有什么要求,为什么foreach 不满足? 重复***.com/questions/559415/… 【参考方案1】:

您可以使用String.Join 连接所有行:

string lines = string.Join(Environment.NewLine, list);
Console.Write(lines);

【讨论】:

你可能救了我的命【参考方案2】:

到目前为止,最明显的是老式的 for 循环:

for (var i = 0; i < list.Count; i++)

    System.Console.WriteLine("0", list[i]);

【讨论】:

好的,对我来说这是最清晰的版本,我最喜欢它。谢谢【参考方案3】:
for (int i = 0; i < list.Count; i++)
    
    Console.WriteLine(list[i])
    

【讨论】:

【参考方案4】:

我喜欢 linq 的这个特殊方面

list.ForEach(Console.WriteLine);

它本身并没有使用 ForEach 循环,因为它使用了 ForEach 演员。但是,嘿,这仍然是一个迭代。

【讨论】:

请注意,List&lt;T&gt;.ForEach 不是 LINQ 方法,而只是一个普通的旧常规 List&lt;T&gt; 方法; LINQ 方法永远不会像 List&lt;T&gt;.ForEach 那样纯粹因为它们的副作用而被调用。 是的,技术上我同意,但这些功能通常与 linq 混为一谈 :-)【参考方案5】:

您可以使用List&lt;T&gt;.ForEach 方法,它实际上不是 LINQ 的一部分,但看起来像:

list.ForEach(i => Console.WriteLine(i));

【讨论】:

【参考方案6】:

迭代List的方式有3种:

//1 METHOD
foreach (var item in myList)

    Console.WriteLine("Id is 0, and description is 1", item.id, item.description);


//2 METHOD   
for (int i = 0; i<myList.Count; i++)
 
    Console.WriteLine("Id is 0, and description is 1", myList[i].id, myMoney[i].description);


//3 METHOD lamda style
myList.ForEach(item => Console.WriteLine("id is 0, and description is 1", item.id, item.description));

【讨论】:

方法 3 的简洁性在一些开发人员中很受欢迎,但它的缺点是你无法“打破”它,如果可以在所有项目都被访问之前减少处理。【参考方案7】:

好吧,您可以尝试以下方法:

Debug.WriteLine("The folowing fruits are available:");
list.ForEach(f => Debug.WriteLine(f));

它非常等效于 foreach 循环,但不使用 foreach 关键字,

话虽如此,我不知道为什么在遍历对象列表时要避免 foreach 循环。

【讨论】:

以上是关于在不使用 ForEach 循环的情况下遍历列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用swiftUI附带的幻灯片删除的情况下创建自定义删除按钮我没有使用列表,只是使用foreach循环

前端进阶知识

Laravel 在不使用 foreach 循环的情况下发送单独的多封邮件

如何在不使用 foreach 循环的情况下从视图访问模型

如何在不使用 foreach 的情况下将 ArrayList 转换为强类型泛型列表?

Parallel.ForEach 使用多线遍历循环