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