unterschied zwischen 'class', 'ref class' und 'value class'
-
hola leute
kann mir einer erklaeren worin der unterschied zwischen 'class', 'ref class' und
'value class' liegt ?Meep Meep
-
'class' ist eine normale C++-Klasse. 'ref class' und 'value class' sind C++/CLI-Elemente. 'ref class'-Typen werden auf dem GC-Speicher angelegt und per Referenz angesprochen (es besteht aber die Möglichkeit, Stacksemantik zu verwenden). 'value class'-Typen werden normalerweise auf dem Stack angelegt, können aber auch auf dem GC-Speicher oder sonst wo vorkommen. Diese Unterscheidung ist nützlich, um eine .Net-weite Semantik zu ermöglichen. In C++/CLI kann man diese zumindest logisch beeinflussen, aber in C# oder anderen .Net-Sprachen wird ein 'ref class'-Objekt immer per Referenz angesprochen, ein 'value class'-Objekt hingegen immer als Wert. Als Folge davon wurden Dinge wie Zahlen (System::Decimal) als 'value class' definiert. So vermeidet man primär Performanceprobleme (wir wollen nicht, dass sich der GC mit unseren Integern und Floats beschäftigen muss), aber auch logische Besonderheiten wie sie im Zusammenhang mit Referenzen auftreten (eine Änderung betrifft alle "Objekte" - es handelt sich eigentlich um Referenzen). Ein System::String ist eine 'ref class', weil man exzessive Kopiervorgänge verhindern wollte.