Objepte/Clone und Referenzen

Hi,

Objekt = Objekte[index];

Wie gehe ich sicher, daß Objekt das selbe Object ist wie Objekte[index] und kein Clone davon?
Ich will es über beide Referenzen gleich ansprechen können und wenn ich mit der einen was ändere, will ich die Änderung mmit der anderen Abrufen können.

cu Desian

Du kannst die Objekte einfach mit == vergleichen. Ein clone liefert hier false.

/Dirk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke für den Hinweis aber ich will einen nichtClone machen und nicht nur prüfen ob es ein Clone ist.

cu Desian

Danke für den Hinweis aber ich will einen nichtClone machen
und nicht nur prüfen ob es ein Clone ist.

cu Desian

== liefert true, wenn das selbe Objekt referenziert wird. Das heisst auch bei nicht clonen wird hier false zurück geliefert.

/Dirk

K.
Will eigendlich nur einen PointerAufMeinObjektDasIchInEinemArrayHabe…

Wollte nur wissen ob
MyClass myObject = arrayVonMyClassObjekte[bestimmterIndex];
myOject zu einem Pointer macht.

Anders:
Macht er da CallByReferences?
Wenn nein, wie macht man das?
Wenn ja, wie verhindert man das?

cu Desian

Hi,

Wollte nur wissen ob
MyClass myObject = arrayVonMyClassObjekte[bestimmterIndex];
myOject zu einem Pointer macht.

ja. Letztlich sind alle Objektinstanzvariablen nur Zeiger auf die Objekte. In Deinem Fall hast Du also einen Zeiger auf das Objekt.

Anders:
Macht er da CallByReferences?
Wenn nein, wie macht man das?
Wenn ja, wie verhindert man das?

cu Desian

Call by Reference ist was anderes. So wird die Parameterübergabe bei Methoden genannt, wenn ein Zeiger als Parameterwert übergeben wird.

Wenn Du Call by reference verhindern willst, dann übergebe einen ‚echten‘ Clone.

Gruss,

Herb

1 „Gefällt mir“

Objekt = Objekte[index];
Wie gehe ich sicher, daß Objekt das selbe Object ist wie
Objekte[index] und kein Clone davon?
Ich will es über beide Referenzen gleich ansprechen können und
wenn ich mit der einen was ändere, will ich die Änderung mmit
der anderen Abrufen können.

Da brauchst du gar nichts machen, das ist von selbst eine Referenz. Was du halt nicht machen solltest ist einem der beiden etwas neues zuweisen also z.b. Objekt = new Objekt(); dann geht deine Referenz verloren

Grüße
Bruno