1

可能重复:
带有索引的 C# foreach

我喜欢在 C# 中使用 foreach 的简单性,但我经常需要一个索引。有没有办法将这些优雅地组合成一个简单的结构,而无需执行以下操作:

for(var i = 0; i<items.Count; i++) {
    var item = items[i];

或者

int i = 0;
foreach(var item in items) {
    i++;

我会想象一些整洁的东西,例如:

foreach(var item in items;int index) {
4

1 回答 1

2

是的,

我在 SO 上找到了一种简洁的扩展方法:

带索引的 foreach

有点像这样(从以前的答案逐字):

public static void Each<T>( this IEnumerable<T> ie, Action<T, int> action )
{
    var i = 0;
    foreach ( var e in ie ) action( e, i++ );
}

并使用如下:

var strings = new List<string>();
strings.Each(( str, n ) =>
{
    // hooray can capture 'n' as well as 'str'
});

或者:

strings.Each((str, n) => Console.WriteLine(str));
于 2012-08-23T09:14:46.410 回答