基本上,相当于:
public static IEnumerable<KeyValuePair<int, T>> Enumerate<T>(this IEnumerable<T> enumerable)
{
int i = 0;
return enumerable.Select(e => new KeyValuePair<int, T>(i++, e));
}
Python有一个,但我在C#中找不到它。如果没有,没有大问题,我只是写了它,但如果它已经存在,我宁愿坚持标准。每个int i=0
上方都有一个令人生畏的foreach
声明。
答案 0 :(得分:6)
return enumerable.Select((e, i) => new KeyValuePair<int, T>(i, e));
另请注意,使用i++
作为捕获变量的方法并不安全;有人可以先使用Count()
,例如使用Parallel
。