Einen Wertetyp als Referenz assignen!
-
Hallo Liebe Leute,
Kurzer Ansatz:
hitBox = sprite.GetGlobalBounds()
Das tolle Ding returned eine FloatRect Objekt. Ist eine Struktur. Da ein Wertetyp implizit immer ne Kopie übergibt wollte ich hier das ganze explizit als Referenz übergeben.
WAS ist zu tun ?
Bitte um freundliche HIlfe!
-
Ich verstehe nicht was du meinst.
Willst du, dass sprite.GetGlobalBounds() eine Referenz an hitbox übergibt, oder dass hitbox als Referenz im weiteren Programmverlauf übergeben wird.
Im 2. Fall käme dann sowas in Frage:
Methode(ref hitbox); private void Methode(ref floatrect hb) { ...}
-
Also GetGlobalBounds() returned ein "FloatRect" (Wertetyp)
demnach wäre ja in meinem "hitBox" Feld nur die KOPIE von dem FloatRect Objekt und nicht etwa die Referenz.
Ich möchte aber gerne die Referenz von dem FloatRect (welches von GetGlobalBounds() returned wird) in meiner hitBox speichern.
FloatRect hitBox; hitBox = sprite.GetGlobalBounds();
-
Falke88 schrieb:
Ich möchte aber gerne die Referenz von dem FloatRect (welches von GetGlobalBounds() returned wird) in meiner hitBox speichern.
FloatRect hitBox; hitBox = sprite.GetGlobalBounds();
Ich glaub dir schon dass du das möchtest.
Geht bloss nicht.
Man kann in C# über die Keywordsref
bzw.out
Referenzen auf Value-Types als Parameter übergeben, aber man kann keine Referenzen auf Value-Types zurückgeben.Und schon gar nicht eine zurückgegebene Kopie eines Value-Types irgendwie magisch in eine Referenz auf das "Original", von dem die Kopie erstellt wurde, verwandeln.
(Letzteres geht nichtmal in C++, bzw. generell in keiner Sprache. Wie auch, nachdem die Kopie erstellt wurde ist die Information welches Objekt ursprünglich kopiert wurde ja nicht mehr da.)Bzw. es muss nichtmal ein "Original" gegeben haben. Kann ja sein dass in der Funktion direkt "return new FloatRect(...)" steht. In dem Fall gibt es kein Original das kopiert wurde, sondern es wurde ad-hoc ein neues FloatRect erstellt.
Und bei einer Funktion namensGetGlobalBounds
einer Sprite-Klasse gehe ich sogar davon aus dass genau das der Fall ist.Bzw. selbst wenn die Sprite-Klasse ein Member hat in dem das Global-Bounds Rect permanent gespeichert ist, und du irgendwie über grässliche Reflection Hacks da drankommen könntest um es z.B. zu modifizieren, dann kannst du davon ausgehen dass die Sprite-Klasse damit nicht klarkommen wird.
=> Du wirst schon das normale, offizielle Interface der Sprite-Klasse verwenden müssen um das Sprite zu modifizieren.
-
Danke für die Einnordung.
Dann muss ich wohl nochmal richtig nachdenken