LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# foreach中获取循环索引的4种方式

admin
2025年3月6日 11:13 本文热度 321
在C#中使用foreach循环的时候我们有时会碰到需要索引的情况,在for循环中我们可以得到循环索引 , foreach并不直接提供 , 下面介绍4种foreach获取索引的方法,希望对大家有用处:


一、手动维护索引变量
‌实现方式‌:
在循环外部声明 index 变量,每次循环时手动递增:
int index = 0;foreach (var item in collection){    Console.WriteLine($"{index}{item}");    index++;}
‌特点‌:

  • 简单直接,无需引入额外依赖‌。
  • 需注意线程安全及变量作用域问题。


二、LINQ Select + 元组解构
‌实现方式‌:
通过 Select 方法将元素与索引绑定为元组,结合 C# 7.0+ 的元组解构语法:
foreach (var (item, index) in collection.Select((value, i) => (value, i))){    Console.WriteLine($"{index}{item}");}
‌特点‌:

  • 代码简洁,无需外部变量‌。
  • 需注意 System.Linq 命名空间和 System.ValueTuple 包(旧版本需手动安装)‌。


三、扩展方法封装
‌实现方式‌:
自定义扩展方法 WithIndex,增强代码复用性:
public static IEnumerable<(T itemint index)> WithIndex<T>(this IEnumerable<T> source){    return source.Select((item, index) => (item, index));}
// 调用foreach (var (item, index) in collection.WithIndex()){    Console.WriteLine($"{index}{item}");}
‌特点‌:

  • 提高代码可读性和复用性‌。
  • 需在静态类中定义扩展方法。


四、IndexOf 方法(需谨慎)
‌实现方式‌:
调用集合的 IndexOf 方法直接获取元素索引(适用于 List<T> 等支持索引查找的集合):
foreach (var item in collection){    int index = collection.IndexOf(item);    Console.WriteLine($"{index}{item}");}
‌特点‌:

  • 依赖集合的 IndexOf 实现,仅适用于元素唯一且支持索引查找的集合‌。
  • 性能较差‌:每次循环均遍历集合查找索引,时间复杂度为 O(n^2)‌。
  • 局限性‌:集合中存在重复元素时可能返回错误索引。



性能与适用性‌

  • 手动维护索引‌:适用于简单场景,性能最优‌。
  • LINQ 方法‌:引入轻微性能开销(如迭代器生成),但对大多数场景影响可忽略‌。
  • 扩展方法‌:适合高频使用场景,平衡性能与代码整洁度‌。
  • IndexOf:元素唯一且需动态查找索引,性能差,重复元素不可靠‌。


选择时需根据具体需求(如代码简洁性、性能要求、框架版本兼容性)综合考量。


该文章在 2025/3/6 11:13:39 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved