foreach with index [重複] 質問する

foreach with index [重複] 質問する

Pythonenumerate()や Rubyに相当する C# はありますかeach_with_index?

ベストアンサー1

このために、この拡張メソッドを保持しています。

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
});

または、のような動作を可能にするにはbreak:

public static bool Each<T>(this IEnumerable<T> ie, Func<T, int, bool> action)
{
    int i = 0;
    foreach (T e in ie) if (!action(e, i++)) return false;
    return true;
}

var strings = new List<string>() { "a", "b", "c" };

bool iteratedAll = strings.Each ((str, n)) =>
{
    if (str == "b") return false;
    return true;
});

おすすめ記事