Код: Выделить всё
string[] items = new string[] { "a", "b", "c", "d" };
Код: Выделить всё
("a", "b"), ("b", "c"), ("c", "d")
Код: Выделить всё
public static IEnumerable
> Pairs(IEnumerable enumerable) {
IEnumerator e = enumerable.GetEnumerator(); e.MoveNext();
T current = e.Current;
while ( e.MoveNext() ) {
T next = e.Current;
yield return new Pair(current, next);
current = next;
}
}
// used like this :
foreach (Pair pair in IterTools.Pairs(items)) {
System.Out.PrintLine("{0}, {1}", pair.First, pair.Second)
}
ИМХО, должен быть хороший способ выполнять подобные операции со скользящим окном.
Я использую C# 2.0 и могу себе представить, что с C# 3.0 (с использованием LINQ) есть больше и более приятные способы сделать это, но меня в первую очередь интересуют решения C# 2.0. Хотя я также буду признателен за решения на C# 3.0.
Подробнее здесь: https://stackoverflow.com/questions/577 ... enumerator