Integer
- это значение . Способ значения сохраняется в Collection
, для его замены необходимо удалить и заново добавить новое значение.
Объекты разные: в коллекции хранится не сам объект, а указатель («ссылка») на него. И независимо от того, передаете ли вы этот указатель ByRef
(ссылка на этот указатель) или ByVal
(копия этого указателя), вы все равно передаете ссылку на точно такой же объект.
Предполагая, что Class1
имеет свойство Foo
...
Private Sub Test(ByVal obj As Class1)
obj.Foo = obj.Foo + 1
End Sub
... затем Foo
увеличивается, а объект в коллекции обновляется.
Подобно значениям, вы не можете просто заменить указатель объекта, который хранится в коллекции - вам нужно удалить, а затем повторно добавить новый объект, если вы хотите это сделать.