To remove an element from any array, you have to "shuffle" the remaining elements out, and then shrink the size of the whole array by one. Setting an element to
Nothing
does not do that, it just removes the element data without affecting the indexes. Personally, I wouldn't do it - I would create a new List of the relevant items, and loop though the array, adding items that I want to keep to the list. Then finally I would reload the array reference from the list with the List<T>.ToArray method:
Dim list As New List(Of [MyClass])()
For Each m As [MyClass] In myArray
If IWantToKeepThisOne(m) Then
list.Add(m)
End If
Next
myArray = list.ToArray()