By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,640 Members | 1,331 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,640 IT Pros & Developers. It's quick & easy.

Copy List(Of type) to another List(Of type)

P: n/a
Hi,

Is it possible to copy the entire List(Of type) object to another
List(Of type) object
(they are both of the same type ofcourse) - without keeping the
reference?

There's the CopyTo method, but it only copies the data to a flat array.

I Need this for Backup in my program, when i update the master list and
want to rollback the entire list to the Pre-Update state...

Right now i'm considering creating a specific function to loop on the
entire list and copy field by field...

Better suggestions will be much appreciated...

Apr 4 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a

Muskito wrote:
Hi,

Is it possible to copy the entire List(Of type) object to another
List(Of type) object
(they are both of the same type ofcourse) - without keeping the
reference?

There's the CopyTo method, but it only copies the data to a flat array.


One of the contructors for List(Of T) takes an IEnumerable(Of T) from
which the new list is constructed. List(Of T) implements IEnumerable(Of
T) so we can do:
Dim listA, listB As List(Of Integer)

listA = New List(Of Integer)
listA.Add(1)
listA.Add(2)
listA.Add(5)

listB = New List(Of Integer)(listA)
This is just the same as the way all the old non-generic collections
generally have a constructor that takes an IList or an ICollection to
populate the new collection from.

--
Larry Lard
Replies to group please

Apr 4 '06 #2

P: n/a
Hi,

Thanks for the answer - but it doesn't work...
It does keep the reference.. when i update something on the first list,
it is also updated on the backup list...

Apr 4 '06 #3

P: n/a

Muskito wrote:
Hi,

Thanks for the answer - but it doesn't work...
It does keep the reference.. when i update something on the first list,
it is also updated on the backup list...


Yes, this is the default behvaiour of reference types. There is no
general 'copy object' method, since 'copying' means a different thing
to every classs. List(Of T) can't possibly know how to copy a T, so
you're going to have to do it yourself.

--
Larry Lard
Replies to group please

Apr 4 '06 #4

P: n/a
Meanwhile on the other side of town... :)

I Thought this would be the final answer.... so i already made my
HomeMade copy function...

Thanks!

Apr 4 '06 #5

P: n/a
Larry,
| This is just the same as the way all the old non-generic collections
| generally have a constructor that takes an IList or an ICollection to
| populate the new collection from.

Be mindful: System.Collections.ObjectModel.Collection(Of T) & its
derivatives, such as BindingList(Of T), wraps the IList(Of T) passed to the
contractor, it does not copy the contents.

Collection(Of T) wrapping the IList(Of T) is very useful in that it allows
BindingList(Of T) to mediate the binding between one your collections & a
Windows Form. It also allows Collection(Of T) to be based on other
collection types, such as LinkedList(Of T) or an Array.

NOTE: To use LinkedList(Of T) with Collection(Of T) you need a version of
LinkedList(Of T) that implements IList(Of T)...

--
Hope this helps
Jay B. Harlow [MVP - Outlook]
..NET Application Architect, Enthusiast, & Evangelist
T.S. Bradley - http://www.tsbradley.net
"Larry Lard" <la*******@hotmail.com> wrote in message
news:11**********************@g10g2000cwb.googlegr oups.com...
|
| Muskito wrote:
| > Hi,
| >
| > Is it possible to copy the entire List(Of type) object to another
| > List(Of type) object
| > (they are both of the same type ofcourse) - without keeping the
| > reference?
| >
| > There's the CopyTo method, but it only copies the data to a flat array.
|
| One of the contructors for List(Of T) takes an IEnumerable(Of T) from
| which the new list is constructed. List(Of T) implements IEnumerable(Of
| T) so we can do:
|
|
| Dim listA, listB As List(Of Integer)
|
| listA = New List(Of Integer)
| listA.Add(1)
| listA.Add(2)
| listA.Add(5)
|
| listB = New List(Of Integer)(listA)
|
|
| This is just the same as the way all the old non-generic collections
| generally have a constructor that takes an IList or an ICollection to
| populate the new collection from.
|
| --
| Larry Lard
| Replies to group please
|
Apr 10 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.