C#能否实现单行for循环?对比Python单行循环示例
C# 中的单行循环实现方式
当然可以,C#里有几种方式能实现类似Python单行循环的效果,不过要根据实际需求选择:
1. 单纯遍历执行操作(比如打印)
如果只是想遍历一组值并执行某个动作(比如打印),可以结合LINQ和List<T>.ForEach方法写成单行:
Enumerable.Range(0, 10).ToList().ForEach(x => Console.WriteLine(x));
甚至可以更简洁,直接传递方法引用:
Enumerable.Range(0, 10).ToList().ForEach(Console.WriteLine);
注意:ForEach是List<T>的实例方法,所以需要先把Enumerable.Range返回的IEnumerable<int>转成List<int>。
2. 类似Python列表推导式(生成集合+执行操作)
如果想像Python那样,在生成集合的同时执行副作用操作(比如打印),可以用LINQ的Select方法,在委托里同时处理操作和返回值:
var myList = Enumerable.Range(0, 10).Select(x => { Console.WriteLine(x); return x; }).ToList();
这样myList会包含0到9的整数,同时控制台会打印每个数字,和你给出的Python示例逻辑一致。
额外提醒
虽然单行写法可行,但不建议用LINQ来执行有副作用的操作(比如打印)——LINQ的设计初衷是用于查询数据,副作用会让代码的意图变得模糊,可读性下降。如果只是单纯遍历执行操作,更推荐用普通的单行foreach循环:
foreach (var x in Enumerable.Range(0, 10)) Console.WriteLine(x);
这种写法同样简洁,而且意图更清晰。
内容的提问来源于stack exchange,提问作者ada7ke
相关产品推荐
相关产品推荐

