Hi
Ich übergebe einer Klasse per Konstruktor eine Refferenz auf nen int. Diese Refferenz würde ich in dieser Klasse jetzt gerne speichern, so dass die neue Klasse immer den aktuellen int-Wert hat.
In C++ wäre das mit Pointern relativ einfach gewesen. Aber wie regelt man das in C#?
class blub
{
int x;
public blub(ref int y)
{
x = y;
}
}
Gruß
Hallo Tr1umph,
in C# geht das so nicht da int ein Werttyp ist, aber mit der INotifyPropertyChanged-Schnittstelle lässt sowas ähnliches bewerkstelligen wie du vorhast.
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
Nur aus interesse - würde das hier auch zum gewünschten Ergebnis führen?
public class Ref<T> where T : struct
{
public T Value { get; set; }
public static implicit operator T( Ref<T> imp )
{
return imp.Value;
}
public Ref() {}
public Ref(T value)
{
Value = value;
}
}
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Hallo Grumbler85,
den Wert in eine Klasse packen - egal ob man so eine allgemeinen Klasse verwendet, wie du sie geschrieben hast oder ob man eine eigene spezielle Klasse schreibt - löst natürlich vordergründig das Problem (Klassen sind Referenztypen, weshalb Änderungen an einem referenzierten Objekt an alle Stellen durchschlagen, von denen das Objekt referenziert wird), nur sollte man sich immer fragen, warum sich der Wunsch überhaupt ergibt und ob es für die eigentliche Ursache nicht bessere Lösungen gibt, z.B. das schon genannte INotifyPropertyChanged. Es kommt also immer darauf an, was man eigentlich erreichen will. Daher wird man meistens ohne eine solche Klasse, wie du die geschrieben hast, auskommen.
herbivore
Ich nutze das so nicht - ich wollte nur mal hören, ob das dieses "ref int"-speichern Problem lösen würde (und das würde es wohl) - war aus reiner wissbegierde.
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Wenn ich das jetzt auf die schnelle mit dem INotifyPropertyChanged richtig verstanden habe müsste meine Klasse davon abgeleitet werden?
Das Problem davon ist, dass die Klasse die den int zur Verfügung stellen soll bereits von einer anderen Klasse abgeleitet ist. Soweit ich weiß gibt es ja in C# keine Mehrfachvererbung?
Hallo Tr1umph,
INotifyPropertyChanged ist eine Schnittstelle. Eine Klassen kann von beliebig vielen Schnittstellen "erben" (genauer: beliebig viele Schnittstellen implementieren).
herbivore