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

Antwort per Email an