A. Ваша функция ничего не возвращает, так что вы также должны иметь предупреждение о том
B. Вы серьезно необходимо включить Option Strict
и пусть компилятор указывает на другие ошибки, такие как aMyArray не имеет типа.
C. Никогда не используйте и не пускайте Try/Catch
; если есть исключение, вы должны знать, когда что-то пойдет не так (и где), чтобы вы могли это исправить.
D. Избегайте массивов, подобных чуме. ReDim Preserve aMyArray(i)
создает новый массив, а затем копирует все данные в новую структуру. Это может быть дорогостоящим с точки зрения производительности, если это большой массив из чего-то типа строк. Net имеет несколько очень хороших коллекций, таких как List(of T)
, которые не должны быть явно изменен:
Private myList As New List(of String) ' or Integer, Decimal or even MyClassObject
...
myList.Add("Hello")
myList.Add("Lists...")
myList.Add("Goodbye")
myList.Add("Arrays")
D (1). Результат использования List
будет означать, что вся процедура может быть устранена. Просто добавьте новые вещи в список по мере необходимости.
E. Приведенный код не может привести к предупреждению, потому что вы никогда не добавляете к нему значение. Добавление: aMyArray(2) = 2
после цикла будет привести к предупреждению. Это потому, что вы никогда полностью не объявлен массив (размер и тип), как в:
Dim aMyArray(100) As String
ReDim
просто изменяет размер массива, который разве то же самое.
F. Поскольку в вашем новом массиве нет ничего, нет оснований использовать ReDim Preserve
, потому что нечего сохранять. Я предполагаю, что это должен быть какой-то расчет. С другой стороны, если вы : пытается изменить размер существующего массива, он должен быть Sub.
Мы все можем угадать, действительно ли это предназначено для изменения существующего массива (на основе ReDim Preserve
) или возврата нового массива материала (учитывая, что массив объявлен в процедуре).
Опять же, ничего не нужно, используя List
, Dictionary
или другой тип коллекции.
Первое, что вам нужно сделать, это повернуть [Option Strict] (http://msdn.microsoft.com/en-us/library/zcd4xwzs.aspx) ** Вкл. **. Это предотвратит создание таких функций, как «Функция MyArray() As Surprise' и функции, которые должны были быть« Sub ». Затем я предлагаю вам использовать [List (Of T)] (http://msdn.microsoft.com/en-us/library/6sh2ey19 (v = vs.110) .aspx). Если нет: 'Dim aMyArray As Object() = Новый объект (-1) {}'. –
Согласен на 100%, включите опцию Strict On, используйте List, а также НЕ окружайте свой код пустым Try-Catch. –
@ Bjørn-RogerKringsjå, я люблю 'Function MyArray() как сюрприз' !! – Plutonix