Autor Beitrag
Sneedlewoods
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Fr 05.04.13 18:39 
Hallo Ihr,

ich programmiere jetzt schon länger, und habe darüber, wie Objekte gespeichert oder verändert werden eigentlich nur Beiläufiges mitbekommen. Mittlerweile frage ich mich dies aber immerhäufiger und wundere mich manchmal, dass meine Programme einigermaßen laufen ;)

z.B.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public class MyObject //ich erstelle eine Beliebige Klasse
{
}

public class MyClass //in einer anderen Klasse verwende ich MyObject innerhalb eines Arrays
{
  MyObject[] array1 = new MyObject[10];
  MyObject obj = array1[5];

  //Wenn ich jetzt obj verändere, verändere ich dann auch array1[5] ?
  //Wenn ich array1[5] verändere, verändere ich dann auch obj?
}


Traditionell würde ich einfach obj verändern und dieses dann sofern gewünscht zurückspeichern
ausblenden C#-Quelltext
1:
array1[5] = obj;					

Aber handelt es sich dabei wirklich um Zuweisungen oder zeigt obj einfach auf das array1[5]?

Vielen Dank für Euer Wissen!
Troubadix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 28
Erhaltene Danke: 9

WIN 7
C# (VS2010 Express)
BeitragVerfasst: Fr 05.04.13 19:04 
Hallo Sneedlewoods,

wenn Du schon länger programmierst wundert es mich etwas, dass Du diese Frage nicht selbst beantworten kannst.

Schau dir hier mal den Unterschied zwischen Referenztypen und Wertetypen an: Galileo Open Book (kleines bischen runter scrollen)

Was Du da erstellst ist ein Referenztyp. Dementsprechend erzeugst du mit der zweiten Anweisung lediglich einen weiteren Verweis auf arra1[5]. Beide variablen zeigen also auf das selbe Objekt. Wenn du also den Inhalt von obj ändert ändert sich auch der Inhalt von array1[5] da es sich nur um zwei unterschiedliche Verweise auf das selbe Objekt handelt.

Gruß
Troubadix
Sneedlewoods Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Sa 06.04.13 02:37 
Vielen Dank Troubadix, mit dem letzten Teil kann ich tatsächlich was anfangen! Leider gibt es die lästige Angewohnheit dem Fragenden stehts eine reinzudrücken. Lass mich Deine Verwunderung also damit bestätigen, dass ich schlichtweg zu blöd war, die Frage selbst beantworten zu können. Gottseidank gibt es schlaue Leute, die den Dummen helfen können.
Damit sollte doch jetzt jeder zufriedengestellt sein ;)