일반 컬렉션에는 개체 컬렉션이 있습니다.C에서 컬렉션의 일반 목록 탐색 #
이 컬렉션을 탐색하는 가장 좋은 방법이 무엇인지 궁금합니다. "MoveNext", "MovePrevious"등과 같은 작업을 수행하고 싶습니다.
기본적으로 내 컬렉션은 여러 단계로되어 있으며 단계별로 이동할 수 있기를 원합니다.
는 SQL
일반 컬렉션에는 개체 컬렉션이 있습니다.C에서 컬렉션의 일반 목록 탐색 #
이 컬렉션을 탐색하는 가장 좋은 방법이 무엇인지 궁금합니다. "MoveNext", "MovePrevious"등과 같은 작업을 수행하고 싶습니다.
기본적으로 내 컬렉션은 여러 단계로되어 있으며 단계별로 이동할 수 있기를 원합니다.
는 SQL
당신은 LinkedList<T> 클래스를 사용할 수 있습니다에서 MoveNext를 및 MovePrevious의 C#을 동등한 있습니다.
각 요소에는 이전 및 다음 요소에 대한 참조가 있습니다.
예를 보려면 설명서 링크를 확인하십시오.
이 기능을 구현하는 데 익숙하지 않지만 인덱스를 보유하는 변수를 사용하면 매우 간단하게 수행 할 수 있습니다. 당신이 MoveNext를 원할 때, 나는 + + 그리고 당신이 MovePrevious를 사용하기를 원할 때 나는 ---- (당신이 i를 변수로 사용한다고 가정합니다).
편집 : 잘못되었습니다. 다음은 MSDN의 스 니펫입니다. 나는 그것으로 깊게보고하지 않은,하지만 그것은 그냥 목록에 Current
속성을 추가 StringCollections
public static void PrintValues2(StringCollection myCol) {
StringEnumerator myEnumerator = myCol.GetEnumerator();
while (myEnumerator.MoveNext())
Console.WriteLine(" {0}", myEnumerator.Current);
Console.WriteLine();
}
에 대한 기사였다.
테스트하지 않았습니다. 그냥 똑바로 보인다.
등 원하는대로 구현해야하는 경비원이 있습니다. 시작 인덱스 -1에서 시작하여 movenext가 필요한가요? 당신이 열거를 사용할 수 전진을 위해 당신
public class BackAndForthList<T> : List<T>
{
private int _current = 0;
public T Current
{
get { return this[_current]; }
}
public void MoveNext()
{
_current++;
if (_current >= Count)
{
_current = 0;
}
}
public void MovePrevious()
{
_current--;
if (_current < 0)
{
_current = Count - 1;
}
}
}
잘 작동 할 수도 있습니다. 왜 내가 stackoverflow에서 두 개의 답변을 표시 할 수 없다;) 오, 음, 고마워, 최소한 투표! – Solyad
까지 :
list.GetEnumerator().MoveNext()
사용 중 하나에서 BindingList
또는 BindingSource
또는 파생 자신.
SQL과 어떤 관련이 있습니까? –