Вы всегда должны стремиться создавать / использовать строго типизированный код. Представьте, что произойдет, если целое число будет передано как объект collection - вам придется вручную проверить тип переменной. Хуже того, пользователь вашего метода должен будет посмотреть в документации, какой объект нужен вашему методу в качестве первого параметра.
Вы должны следовать подходу, предложенному womp , или, что еще лучше, вы должны заставить свой параметр требовать объект, который расширяет общий интерфейс коллекции, ICollection (Of T):
Public Function DoStuff(Of T)(collection As ICollection(Of T), elt As T) As stuff
...
collection.Add(elt)
...
End Function
, поскольку это позволило бы пользователю метода передавать не только списки, но и все другие классы, которые наследуют интерфейс ICollection (Of T) (synchronizedCollection, HashSet, LinkedList или пользовательские классы и т. Д.), Который действительно является мощью оо программирование.