1

重複の可能性:
インデックス付きのC#foreach

私はC#でforeachのシンプルさを操作することを楽しんでいますが、インデックスが必要になることがよくあります。次のことを行わずに、これらを1つの単純な構造にエレガントに組み合わせる方法はありますか。

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 に答える