ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
213
213
EMPFEHLEN
-
Hallo,
ich habe ein merkwürdiges Problem in C#, ich nutze VS 10 RC. Win 7.
Ich habe eine Klasse A
Code :1 2 3 4 5 6 7 8 9
class A { public int ab; public A(int a) { ab = a; } }
und ich habe zwei Klassen in denen ich eine Liste habe.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class Liste1 { public List<A> ErsteListe= new List<A>(); public Liste() { } } class Liste2 { public List<A> ZweiteListe= new List<A>(); public Liste() { } }
Wenn ich jetzt die ErsteListe mit Instanzen von A fülle, wie bekomme ich dann:
1. eine Copy einer bestimmten Instanz aus der ErstenListe in die ZweiteListe?
2. eine Referenz von einer bestimmten Instanz aus der ErstenListe in die ZweiteListe?
Mit:
bekomme ich meistens anscheinend eine Referenz.Code :1
Liste2.ZweiteListe.Add(Liste1.ErsteListe[3]);
Mit:
Merkwürdiger weise bekomme ich auch hier eine ReferenzCode :1 2
A ATemp = new A(Liste1.ErsteListe[3].ab); Liste2.ZweiteListe.Add(ATemp);

Ich verstehe leider nicht warum?
Können mir hier die Schlüsselwörter ByRef und ByVal weiterhelfen?
Mit Zeigern wäre das ganze so schön einfach
Geändert von FJK (12.03.10 um 21:56 Uhr)
-
Hi
In .NET werden Reference Types (alle Klassen) als Referenz übergeben (daher auch der Name).
Wenn du eine Kopie deiner Objekte haben willst, solltest die Klasse IClonable implementieren. Mit der Methode Clone kannst du dann, wie der Name sagt, einen Klon anlegen.Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
ok, wird ich nachher mal probieren,
Was ist wenn ich eine Instanz in der Liste lösche, wie lösche ich diese dann auch im Speicher?
Gibt es noch Destruktoren?
Und was passiert wenn ich die Instanz im Speicher Lösche mit den Listeneintrag, ist der dann NULL?Geändert von FJK (13.03.10 um 08:56 Uhr)
-
Wenn du die Instanz in der Liste "löschst" (List.Remove), entfernst du nur das Objekt aus der Liste (die Referenz wird gelöscht).Wenn es noch weitere Referenzen auf das Objekt gibt, ist es auch noch verfügbar. Sind keine Referenzen mehr vorhanden wird der Speicherbereich vom Garbage Collector freigegeben
Wenn du einen für deine Klasse schreibst, gibt es einen
Mehr zum Thema findest du unter http://www.c-sharpcorner.com/UploadF...structors.aspx
Man kommt in .NET nur mit vielen schmutzigen Tricks an die direkten Objekte im Speicher. Du arbeitest immer auf einer Referenz! Soll heißen, dein Szenario ist in .NET nicht möglich. Die Runtime verhindert es.Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
Ähnliche Themen
-
Instanzen in Listen Registrieren und drauf zugreifen
Von chetigol0308 im Forum Java GrundlagenAntworten: 1Letzter Beitrag: 10.02.09, 09:30 -
Mit verketteten Listen Instanzen verwalten
Von Theranium im Forum C/C++Antworten: 2Letzter Beitrag: 10.11.07, 12:21 -
viele errechnete werte sofort in datei schreiben oder sammeln und dann schreiben?
Von larss im Forum JavaAntworten: 4Letzter Beitrag: 25.04.05, 22:15 -
Darstellung in Listen oder Grafik
Von kerian im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 2Letzter Beitrag: 13.11.03, 20:06 -
CHMOD 777 oder 666 für copy()
Von kodiacc im Forum Hosting & WebserverAntworten: 6Letzter Beitrag: 09.07.03, 19:11





Zitieren


Login





