Есть проблема:
descriptions.Add = {expression}
Вы вызываете метод Add
без каких-либо параметров, а затем пытаетесь присвоить его возвращаемому значению (а я недумаю, что он есть).
Синтаксически это выглядит следующим образом:
- Возьмите
descriptions
коллекцию - Запустите метод
Add
без каких-либо аргументов (компилироватьошибка: аргумент не является обязательным) - Возьмите возвращаемое значение (его нет, но это синтаксически не имеет значения) и, предполагая, что это объект со свойством по умолчанию, присвойте его выражению с правой стороныоператора
=
.
Если метод Add
не требует никаких аргументов и возвращает ссылку на объект, ваш код может быть действительным.Поскольку действительно имеет необязательный параметр и ничего не возвращает, это ошибка компиляции.
Удалите оператор =
, вы получите следующее:
descriptions.Add {expression}
Что выглядит следующим образом:
- Возьмите
description
collection - Вызовите метод
Add
, передайте {expression}
в качестве аргумента
Это также проблема:
getDescriptions (descriptions)
Снять скобки;они вынуждают ссылку на объект оценивать как выражение значения - а свойство по умолчанию Collection
class '(вызывается при разрешении объекта во время вычисления выражения) является его параметризованным членом Item(Index)
, вы не можете сделать это юридически,Обратите внимание, что если свойство по умолчанию не параметризовано, вы будете передавать его значение ByVal
, независимо от того, getDescriptions
указывает ByRef
.
При этом параметр descriptions
нужно только передать ByRef
потому что вы переназначаете ссылку на сам объект с этим оператором Set
- довольно подверженная ошибкам вещь, связанная с глобальной переменной.