Member 12915158 Ответов: 2

Привет, вот мой код C#, получающий исключение idexoutofrange, могу ли я знать, как это исправить


private void ShowOldMedicalNoteCommandHandler()
      {
          if (null != this.MedicalElements)
          {
              NavigatedIndex = NavigatedIndex + 1;
              var medicalNote = MedicalElements[NavigatedIndex];
              NavigateMedicalNote(medicalNote);
              IsNewestEnabled = true;
              IsOldestEnabled = MedicalElements.Count - 1 != NavigatedIndex;
          }
      }


Что я уже пробовал:

private void ShowOldMedicalNoteCommandHandler()
      {
          if (null != this.MedicalElements)
          {
              NavigatedIndex = NavigatedIndex + 1;
              var medicalNote = MedicalElements[NavigatedIndex];
              NavigateMedicalNote(medicalNote);
              IsNewestEnabled = true;
              IsOldestEnabled = MedicalElements.Count - 1 != NavigatedIndex;
          }
      }

2 Ответов

Рейтинг:
2

Mehdi Gholam

Очевидно NavigatedIndex больше, чем MedicalElements.Count так что просто проверьте это:

...
NavigatedIndex = NavigatedIndex + 1;
if(NavigatedIndex < MedicalElements.Count)
{
   var medicalNote = MedicalElements[NavigatedIndex];
   NavigateMedicalNote(medicalNote);
   IsNewestEnabled = true;
   IsOldestEnabled = MedicalElements.Count - 1 != NavigatedIndex;
}
else
{
 // handle this case accordingly 
}


Рейтинг:
1

Peter Leow

По-видимому, ошибка проистекает из:

MedicalElements[NavigatedIndex]

когда значение
NavigatedIndex
больше, чем количество элементов в
MedicalElements
минус один, не забывайте, что индексы в такой коллекции, как массив, начинаются с нуля. Чтобы предотвратить это, используйте Рассчитывать [^].