Я пытаюсь получить элемент в определенном индексе с помощью метода:Почему it.current меняет свои значения во время отладки?
public T GetElem(int index)
{
var it = outerInstance.iterator();
var i = 0;
while (it.MoveNext() && i < index)
{
i++;
}
return it.Current;
}
Я создал свой собственный итератор, который является внутренним классом outerInstance, во время отладки текущего элемента уменьшается в конце он становится нулевым.
Мой тест это внутри консольного приложения и выглядит следующим образом:
Storage<int?> storage = new DynSLinkedList<int?>();
var ranked = new Ranked<int?>(storage);
if (ranked.IsEmpty())
{
Console.WriteLine("is empty \n");
}
for (var i = 1; i <= 10; i++)
ranked.Add(i);
if (!ranked.IsEmpty())
{
Console.WriteLine("is not empty \n");
}
if (ranked.Size() == 10)
{
Console.WriteLine("Size ok \n");
}
for (var i = 0; i <= 9; i++)
{
var element = ranked.GetElem(i);
if (element == 10 - i)
{
Console.WriteLine("get " + i + " elem ok \n");
}
}
только при г = 0 он получает право.
Я попытался написать эквивалент для метода Java:
@Override
public T getElem(int index) throws IndexOutOfBoundsException {
RWIterator<T> it=support.iterator();
int i=0;
while (it.hasNext() && i<index){
it.next();
i++;
}
return it.next();
}
Так что же ваш итератор выглядеть? Что выглядит 'Ranked'? –