War ein paar Tage im Urlaub und konnte nicht gleich antworten. ->Primitivs werden bei .NET Wert-Typen genannt.
(Die deutschen Ausdruecke interessieren mich nicht sehr, da ich nicht im deutschsprachigem Raum arbeite und sowieso gegen zuviel Uebersetzungen bin... Im Englischen heissen sie stack variables (oder auch value type variables). Da Stack und Heap Assemblerbegriffe sind wird das von Jedem in jeder Sprache verstanden und MS verwendet des oefteren beide Ausdruecke) -> Referenztypen werden immer(!) "By Reference" �bergeben ist nicht ganz richtig. Par default werden Variablen in .NET als Value (in VB.NET auch ByVal) uebergeben. Will man sie als ref muss dieses in C# explizit deklariert werden. Dies gilt auch fuer stack variables. Hier ist der Unterschied fein, aber es besteht ein Unterschied, wobei Du den Effekt der sich daraus ergibt bereits beschrieben hast, da hier die Referenz und nicht das Objekt kopiert werden. Also ref fuer stack variables: Pointer auf einen Pointer der auf das Objekt zeigt, wohin gegen sonst der Pointer direkt auf das Objekt zeigt. (Hier noch ein paar simple Zusammenfassungen: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcn7/html/ vaconargumentpassingmechanism.asp und http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/ vclrfpassingmethodparameters.asp) -> In dem Beispiel ging es um ints, Hast recht. Es ging hier eher ums Prinzip, denn ich habe heute morgen ein Paar Tests gemacht und nur geringste Unterschiede feststellen koennen. (Beim Caching gibt es anscheinend unterschiede ??? Bei der ersten Ausfuehrung verhalten sich beide (ref, val) gleich, bei der anschliessenden erneuten Ausfuehrung gibt es Unterschiede. Im Vergleich zu out gibt es allerdings doch welche (bei stack variablen). Fur ein "kompliziertes" Objekt (14 DataSets und ein String) brauchte mein Rechner 580 ms (ref) im vgl. zu 1880 ms (out). (ref und val hingegen hatten fast uebrhaupt keinen Unterschied) -----Message d'origine----- De�: Claudius Ceteras [mailto:[EMAIL PROTECTED] Envoy�: vendredi 11 juillet 2003 21:28 ��: [EMAIL PROTECTED] Objet�: RE: RE : [Asp.net] Viewstate Problem / falscher subject? Bitte keine HTML mails! Ist zwar falsches subject, aber ich glaub dies bezieht sich auf den "return werte"-thread !? Dazu ist folgendes anzumerken... Primitivs werden bei .NET Wert-Typen genannt. In dem Beispiel ging es um ints, welche eben nicht kompliziert erstellt werden m�ssen, wobei Referenztypen wie der String nie bei �bergabe kopiert werden... D.H. Referenztypen werden immer(!) "By Reference" �bergeben und je nachdem ob man ref verwendet oder nicht kann man die referenz ver�ndern oder nicht.. Claudius -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Freitag, 11. Juli 2003 19:17 To: [EMAIL PROTECTED] Subject: RE : [Asp.net] Viewstate Problem Stimmt. In der Tat werden Primitifs (schliesslich heissen Sie ja stack variables ;)) lediglich auf dem Stack behandelt. Aber sie muessen erst erstellt werden. Dieser Prozess ist der der die Sache verlangsamt. Ein Beispiel: string a = "yy" a = a + "zz""; Was passiert? a wird in der ersten Zeile zum erstem mal erzeugt. In der zweiten Zeile wird nun festgestellt, dass die Groesse von a veraendert wird. Da aber die Groesse eines Strings nicht veraenderbar ist, wird nun a mit der veraenderten Groesse neu erzeugt. Das dieses ein Langwieriger Prozess ist, laesst sich leicht ueberpruefen. Man schreibt zwei Methoden. Eine, die ueber Concatenation arbeitet und eine die mit StringBuilder arbeitet (was keine Neuerstellung von a erfordert). Was laesst sich also daraus folgern? Wenn Du in einer Methode die Variablen bereits erstellt hast (was der aufwendige Teil ist) und diese Variablen einer Methode als Referenz uebergibst (Referenzen sind extrem optimiert hierfuer), sparst Du die Neuerstellung. Die Ressourcen sparst Du nicht durch die Groesse, sondern durch die Vermeidung der Neuerstellung von redundanten Variablen. Das alles laesst sich sehr leicht ueberpruefen, indem dieser Prozess einfach (z.B. durch eine Schleife x mal wiederholt wird. Einfach ein TimeStamp vor und nachher setzen. -----Message d'origine----- De : Phillip H�bner [mailto:[EMAIL PROTECTED] Envoy� : vendredi 11 juillet 2003 18:31 � : [EMAIL PROTECTED] Objet : [Asp.net] Viewstate Problem Hi, ich m�chte einen einfachen l�schen button bauen der die ganzen Daten in einem Formular entfernt. Habe einen button mit onclick Event und einen passenden Event Handler der den Event abf�ngt. Nur wei� ich nicht wie ich den Viewstate l�schen kann. Mit ViewState.clear() gehts nicht. Kann es sein das das onclick Event des Buttons ausgef�hrt wird bevor der Viewstate mit den Formular Elementen verbunden wird, oder hab ich �berhaupt einen Denkfehler? Danke, Phillip _______________________________________________ Asp.net mailing list [EMAIL PROTECTED] http://www.glengamoi.com/mailman/listinfo/asp.net _______________________________________________ Asp.net mailing list [EMAIL PROTECTED] http://www.glengamoi.com/mailman/listinfo/asp.net
