Entwickler-Ecke
Basistechnologien - Kann ein Referenztyp als Werttyp behandelt werden?
Palladin007 - Sa 22.12.12 18:13
Titel: Kann ein Referenztyp als Werttyp behandelt werden?
Moin
Es gibt ja die Möglichkeit, via ref einen Werttyp als Referenztyp zu behandeln.
Geht das auch umgekehrt, dass ein Referenztyp als Werttyp behandelt wird, oder muss ich dafür eine Kopie vom jeweiligen Objekt anlegen?
So kann ich dann in einer Methode frei an den Parametern arbeiten, ohne dass das was an den ursprünglich übergebenen Objekten ändern würde. Wenn die Parameter aber als Referenztyp behandelt werden, würde ja auch jede Änderung nach Ausführung der Methode erhalten bleiben, das will ich aber nicht.
Gibt es da eine schlanke Methode, ähnlich wie das Gegenstück ref?
Gruß
Palladin007 - Sa 22.12.12 18:53
Ja, das weiß ich, aber ich hatte auf einen ebenso schnellen und einfachen Weg gehofft, wie es ref für die umgekehrte Variante anbietet.
Es gibt also keine so einfache Möglichkeit, die bisher nur an mir vorbei gegangen ist. Schade, dann muss ich doch klonen. ^^
Ralf Jansen - Sa 22.12.12 19:38
Zitat: |
Es gibt also keine so einfache Möglichkeit, die bisher nur an mir vorbei gegangen ist. Schade, dann muss ich doch klonen. ^^ |
Schade??? Denke noch mal genau nach ;)
Es gibt keine Definition was denn ein Klon genau ist (Deep, Shallow oder irgendwas dazwischen) wie sollte also dein gewünschtes Schlüsselwort genau das machen was du gerade brauchst? Wenn es das gäbe hätte wahrscheinlich Murphy genau die Definition von Klon gewählt die dir nicht hilft und du müßtest es doch selbst machen.
Bei so Sprachfeaturewünschen verweise ich gern auf c++. Da sieht man wo Featurewahn hinführt. Millionen Möglichkeiten sich in den Fuss zu schießen ohne spürbaren Produuktivitätsgewinn. Eher das Gegenteil.
Und der Code
C#-Quelltext
1:
| MeineFunktion(unref instance) |
ist nicht mal kürzer als
C#-Quelltext
1:
| MeineFunktion(instance.Clone()) |
Es verschleiert nur was genau passiert während du dir bei der Implementierung von Clone gedanken gemacht hast was für eine Sorte von Clone du brauchst.
Palladin007 - Sa 22.12.12 19:52
Ich wollte einfach nur verhindern, dass die Änderungen am Objekt innerhalb der Methode auf das Objekt außerhalb der Methode Auswirkungen haben, wie es eben normalerweise ist. Gut, blöd erklärt, weil ein Objekt sowohl innerhalb, als auch außerhalb der Methode immer noch das gleiche Objekt ist, aber ihr wisst, was ich meine. ^^
Ich habe hier nämlich einen Typ, den ich ursprünglich als Struktur schreiben wollte, aber dafür wurde die dann zu kompliziert.
@Th69:
Der Typ enthält nur zwei Attribute, eine byte-Liste und ein Attribut vom Typ bool. ^^
Und ich brauche das auch nur intern, hab deshalb jetzt simpel eine kleine Methode zum klonen geschrieben.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!