Laden...

Änderung einer Variable ändert nicht das Objekt, auf das die Variable zeigt [==> ja, das ist so]

Erstellt von Cornflake vor 11 Jahren Letzter Beitrag vor 11 Jahren 434 Views
Thema geschlossen
C
Cornflake Themenstarter:in
142 Beiträge seit 2007
vor 11 Jahren
Änderung einer Variable ändert nicht das Objekt, auf das die Variable zeigt [==> ja, das ist so]

Hallo

Ich habe da seit dem Woe. immer noch ein Problem bei dem ich nicht weiterkomme. Ich konnte in einem Testprojekt das Problem zumindest auf einen kleinen Codeblock reduzieren.

Aufbau des Projektes...
Folgendes habe ich angelegt:
DataSet ds1.xsd
Im DataSet eine DataTable (dt1

In der DataTable eine Spalte Wert[int]

Auf der Form ein DataGridView (dgv1

Auf der Form eine Bindingsource bs1 die über eine DataSet-Instanz auf die Spalte Wert zugreift.
Auf der Form einen Button (btn1

Wenn ich jetzt den Button klicke soll in die Tabelle einfach eine Zahl geschrieben werden.

Mit dem Standardablauf .Add wird eine 1 geschrieben
Mit dem .Copy sollte eine 2 geschrieben werden.

Problem:
Es tauchen nur die 1er auf keine 2er.

Hier der Code von btn1:


DataTable dt = ds1.dt1;

//Geht
dt.Rows.Add(new object[] {1});


//Geht nicht... Warum?
DataTable t = dt.Clone();
t.Rows.Add(new object[] { 2 });
dt = t.Copy(); 

Bei 3 mal klicken steht in der Tabelle:
1
1
1

Es sollte aber stehen:
1
2
1
2
1
2

Was muss ich machen damit dieses .copy() funktioniert ?(

Der Grund für dieses umständliche .copy() vorgehen soll fürs erste mal nebensache sein, später wird dann das aufwendige füllen in einen eigenen Thread ausgelagert und zum Schluss die vorbereitete DataTable im GUIthread zurückgeschrieben.

Aber erstmal würde ich gerne überhaupt das .copy verstehen.

Grüße Cornflake

5.658 Beiträge seit 2006
vor 11 Jahren

Hi Cornflake,

suchst du nicht eigentlich die Funktionalität von DataTable.Merge?

Christian

Weeks of programming can save you hours of planning

C
Cornflake Themenstarter:in
142 Beiträge seit 2007
vor 11 Jahren

Arg... 🙂

**Genial ** das geht 🙂 🙂 👍

Nur warum geht das Copy nicht, bzw. wie müsste ich das dann einsetzen?

BIG THX 🙂

Hinweis von herbivore vor 11 Jahren

Mit einer Zuweisung an eine Variable eines Referenztyps wird nur die Referenz in der Variable überschrieben, nicht das Objekt auf das die Variable referenziert. Das gehört aber zu den Absoluten Grundlagen, die wir als bekannt voraussetzen, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

Thema geschlossen