Поиск в пустом зубчатом массиве в VB.NET - PullRequest
1 голос
/ 17 октября 2011

Итак, у меня есть функция, которая ищет значения в зубчатом массиве, и это выглядит так:

Private Function Lookup(ByVal Search_path As String) As Integer
    Dim i As Integer = 0
    Do Until MasterIndex(i) Is Nothing 'throws an exception here
        If Search_path = MasterIndex(i)(0) Then
            Return MasterIndex(i)(1)
        End If
        i = i + 1
    Loop
    Return -1
End Function

Проблема в том, что, когда я тестирую это с пустым массивом, в строке 3 выдается ошибка Index was outside the bounds of the array. Как мне это исправить?

Ответы [ 2 ]

3 голосов
/ 17 октября 2011

Вам необходимо проверить, превышает ли ваш индексатор количество элементов в массиве.

Private Function Lookup(ByVal Search_path As String) As Integer
    Dim i As Integer = 0
    Do Until i = MasterIndex.Length OrElse MasterIndex(i) Is Nothing
        If Search_path = MasterIndex(i)(0) Then
            Return MasterIndex(i)(1)
        End If
        i = i + 1
    Loop
    Return -1
End Function
2 голосов
/ 17 октября 2011

Возможно, чище как петля FOR:

Private Function Lookup(ByVal Search_path As String) As Integer 
  for i = 0 to MasterIndex.Length - 1 
    if MasterIndex(i) is nothing then exit for
    If Search_path = MasterIndex(i)(0) Then 
        Return MasterIndex(i)(1) 
    End If 
  next
  Return -1 
End Function 
* * 1003 Бесконечно спорно. * * 1004
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...