Ответ 1
If Not MyArray(i) Is Nothing Then
В моем приложении VB6 у меня есть массив объявленных объектов, таким образом...
Dim MyArray() as MyClass
Этот массив заполняется, когда обработка продолжается
Set MyArray(element) = passed_object
и поскольку элементы больше не нужны,
Set MyArray(otherelement) = Nothing
При использовании массива я хочу использовать цикл, подобный
For i = 1 To Ubound(MyArray)
If MyArray(i) <> Nothing Then ' Doesn't compile
...do something...
End If
Next i
Но я не могу получить ничего похожего на компиляцию. Я также пробовал
If MyArray(i) Is Not Nothing Then
Должен ли я сделать это, и если да, то какой тест я должен здесь внести?
If Not MyArray(i) Is Nothing Then
If Not MyArray(i) Is Nothing Then
В дополнение к другим ответам (Ничто не используется в качестве оператора) существует также функция:
IsNothing(<object here>)
например.
if IsNothing(MyArray(i)) = false then
EDIT: MSDN бесполезно заявляет, что это существует в VBA и VB6, но, по-видимому, он не существует в VB6 в соответствии с комментариями ниже
Вместо
IsNothing(<object here>)
это должно работать в VB6:
<object here> Is Nothing
Private Function IsNothing(objParm As Object) As Boolean
IsNothing = IIf(objParm Is Nothing, True, False)
End Function