Bei normalen Collections passiert das überhaupt nicht und würde auch gar
nicht gehen, da ein Element i.d.R. nicht weiß, in welcher Collection es sich
befindet. 

string element1 = "foo";
string element2 = "bar";
ArrayList list = new ArrayList();
list.Add( element1 );
list.Add( element2 );

ArrayList list2 = new ArrayList();
list2.Add( element1 );
list2.Add( element2 );

// element1 und element2 sind in beiden collections:
Trace.Assert( list.Count == 2 );
Trace.Assert( list.Count == list.Count );
Trace.Assert( list[0].Equals( list2[0] ) );
Trace.Assert( list[1].Equals( list2[1] ) );


Eine Ausnahme ist die Control.ControlCollection, welche als
Controls-Eigenschaft der Klasse Control benutzt wird (sehr viel "Control" in
einem Satz, oder? *g*). Control hat eine Eigenschaft "Parent", die das
übergeordnete Steuerelement angibt. Wird ein Steuerelement der
ControlCollection zugefügt, wird nachgesehen, ob dessen Parent-Eigenschaft
!= null ist. Falls ja, wird es aus der ControlCollection des Parents
entfernt und dieser Collection zugefügt. Zum Schluss wird nocht die
Parent-Eigenschaft auf das Control gesetzt, dass diese Collection enthält.
Parent und die ControlCollection arbeiten immer synchron. Das heißt, wenn
man selbst die Parent-Eigenschaft ändert, wird das Control automatisch
"umgemeldet", arbeitet man mit der ControlCollection, werden Parents
umgebogen. Daher ist es unnötig, *sowohl* den Parent eines Controls zu
setzen als es der Controls-Eigenschaft des übergeordneten Controls
zuzufügen.

Form f = new Form();
Form f2 = new Form();

Button button1 = new Button();
Button button2 = new Button();

f.Controls.Add( button1 );
f.Controls.Add( button2 );

Trace.Assert( f.Controls.Contains( button1 ) );
Trace.Assert( f.Controls.Contains( button2 ) );
Trace.Assert( button1.Parent == f );
Trace.Assert( button2.Parent == f );

f2.Controls.Add( button1 );
f2.Controls.Add( button2 );

// controls warden umgemeldet!
Trace.Assert( f2.Controls.Contains( button1 ) );
Trace.Assert( f2.Controls.Contains( button2 ) );
Trace.Assert( !f.Controls.Contains( button1 ) );
Trace.Assert( !f.Controls.Contains( button2 ) );
Trace.Assert( button1.Parent == f2 );
Trace.Assert( button2.Parent == f2 );



MfG Andre Loker




> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED] [mailto:csharp.net-
> [EMAIL PROTECTED] Im Auftrag von Thomas Bandt
> Gesendet: Freitag, 3. Dezember 2004 20:26
> An: [EMAIL PROTECTED]
> Betreff: RE: [CSharp.net] RE: [CSharp.net] Verständnisproblem Collection
> 
> Hm... leuchtet mir aber trotzdem nicht ein, denn für gewöhnlich werden
> dann ja Referenzen auf die Original-Objekte erzeugt. Verstehe das einer :(
> 
> Gruß, Thomas
> _____________________________________
> http://blogs.dotnetgerman.com/thomas/
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Alexander Zeitler
> > Sent: Friday, December 03, 2004 5:37 PM
> > To: [EMAIL PROTECTED]
> > Subject: [CSharp.net] RE: [CSharp.net] Verständnisproblem Collection
> >
> > Hallo,
> >
> > >
> > > Kennt ihr das, wenn ihr am liebsten mit der Tastatur auf
> > > den ja doch unschuldigen Rechner einschlagen würdet? :-)
> >
> > ja - siehe meine letzte Frage....
> >
> > >
> > > Mal ne Frage: warum werden Items einer Collection, wenn
> > > ich diese einer anderen Collection zuweise, aus der ersten
> > > gelöscht? Ist das ein Bug, oder hat das irgendeinen Sinn?
> > >
> >
> > hat vielleicht was mit der Eindeutigkeit zu tun...
> >
> > Gruss
> >
> > Alex
> >
> >
> > _______________________________________________
> > CSharp.net Mailingliste, Postings senden an:
> > [EMAIL PROTECTED]
> > An-/Abmeldung und Suchfunktion unter:
> > http://www.glengamoi.com/mailman/listinfo/csharp.net
> 
> 
> _______________________________________________
> CSharp.net Mailingliste, Postings senden an:
> [EMAIL PROTECTED]
> An-/Abmeldung und Suchfunktion unter:
> http://www.glengamoi.com/mailman/listinfo/csharp.net

_______________________________________________
CSharp.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/csharp.net

Antwort per Email an