Get index of Enumerator.Current in C#
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
(C#) Get index of current foreach iteration
早上好,
是否有任何方法可以在不使用辅助变量的情况下获取
非常感谢你。
不,
如果您需要这样做,您要么自己实现它,要么使用一个不同的接口,如
不,没有。如果您真的需要索引,最优雅的方法是使用循环。使用迭代器模式实际上不那么优雅(而且更慢)。
Linq的
1 2 3 4 | foreach(var x in"ABC".WithIndex()) { Console.Out.WriteLine(x.Value +"" + x.Index); } |
使用这些助手:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public struct ValueIndexPair<T> { private readonly T mValue; private readonly int mIndex; public T Value { get { return mValue; } } public int Index { get { return mIndex; } } public override string ToString() { return"(" + Value +"," + Index +")"; } public ValueIndexPair(T value, int index) { mValue = value; mIndex = index; } } public static IEnumerable<ValueIndexPair<T>> WithIndex<T>(this IEnumerable<T> sequence) { int i = 0; foreach(T value in sequence) { yield return new ValueIndexPair<T>(value, i); i++; } } |