It depends on what the list contains. If they are primitive types then a shallow copy such as you have done between Lst1 and Lst2 is sufficient. If the contents of the list to be copied are objects then you need to do a deep copy and clone those objects otherwise you are only copying references to existing objects. So for each of your AType instances you need to Dim another AType and copy the fields from one to another, and if those fields themselves contain object references you may need to clone them as well, and so on, depending upon what you are trying to achieve.