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