2016-01-10 3 views
1

в этой конкретной строке кода:C# LastIndexOf не дает правильный результат

correct = Array.LastIndexOf(turns.ToArray(), false, 4, 0); 

я получаю результат correct = -1, ну как это возможно?

turns[0] до turns[3] равен falseturns[4]=true и turns[5]=false возможно быть вызваны тем, что последний индекс я хочу быть посмотрел на это 4, и это имеет значение, отличное от требуемых один?

+0

попробуйте изменить последний аргумент> 0 – TheVillageIdiot

+0

Да он сделал свою работу благодарность за быстрый ответ – kopelence

ответ

4

Проблема связана с последним аргументом (счетом). Это ограничивает количество найденных элементов. Вы ограничиваете его поиском 0 элементов, начиная с индекса 4. Таким образом, он ничего не находит.

0

Попробуйте это:

correct = Array.LastIndexOf(turns.ToArray(), false, turns.Length, turns.Length); 

Что вы делаете неправильно:

  • никогда жесткий длины кода массива (особенно в вашем случае, когда массив заполняется значениями)
  • в первый индекс на самом деле является начальным индексом поиска от назад, а вторым индексом является фактически количество, то есть сколько элементов для поиска (MSDN constructor clarification)

Update 1:

Ошиблись на начальный индекс и подсчета числа. Обновленные изменения, спасибо @Steve за указание на это.

+1

Из MSDN: _StartIndex = Отправной индекс ** назад ** search_ – Steve

0

Ваш счет указывает на поиск 0 элементов в разделе.

correct = Array.LastIndexOf(turns.ToArray(), false, 4, 2); 
Смежные вопросы