Variablen Deklaration
-
for ( int i = 0 ; i < 100 ; i++ ) { string name= "Hauer" ; }
was passiert hier genau ? Wird hier in jedem Schleifendurchlauf eine neue Variable name angelegt ? Oder wird er beim 2.Schleifendurchlauf merken dass es schon eine Variable string name gibt und er sie nur überschreibt. Folglich wäre es dann egal ob ich die Deklaration in oder außerhalb der Schleife mache ?
-
GEH WEG!
-
blurry333 schrieb:
was passiert hier genau ? Wird hier in jedem Schleifendurchlauf eine neue Variable name angelegt ?
Ja.
Oder wird er beim 2.Schleifendurchlauf merken dass es schon eine Variable string name gibt und er sie nur überschreibt.
Das kommt auf das gleiche raus, wenn du mal drüber nachdenkst. Spielt aber keine Rolle, eine Variable hat nunmal als Gültigkeitsbereich immer nur den umschließenden { ... }-Block, also in dem Fall den Schleifenkörper
Folglich wäre es dann egal ob ich die Deklaration in oder außerhalb der Schleife mache ?
Nein.
-
huiiii. Wußte gar nicht dass die Variable dann nur im Schleifenkörper gültig ist. Nach jeder Iteration würde sie damit neu angelegt. Wäre nicht sehr performant. Aber wenn ich sie über der Schleife deklariere dann ist sie wieder in der ganzen Funktion gültig. Und das will ich ja wiederum auch nicht
Aber die Performance ist in diesem Fall wohl wichtiger
-
blurry333 schrieb:
huiiii. Wußte gar nicht dass die Variable dann nur im Schleifenkörper gültig ist.
Woher soll man sowas nach 3 Jahren C# auch wissen?
GEH WEG!
-
blurry333 schrieb:
Nach jeder Iteration würde sie damit neu angelegt. Wäre nicht sehr performant.
Das kann der Compiler sicher optimieren.
blurry333 schrieb:
Aber die Performance ist in diesem Fall wohl wichtiger
Nein, in so ziemlich allen Fallen ist die Performance egal. Du wirst, auch wenn der Compiler das nicht optimiren kann (was ich mir nicht vorstellen kann), keinen Unterschied merken.
-
blurry333 schrieb:
Nach jeder Iteration würde sie damit neu angelegt. Wäre nicht sehr performant.
Was hat das mit Performance zu tun? Du musst doch wissen, ob du die Variable nur in der Schleife brauchst und wenn ja, ob sie immer wieder neu initialisiert werden soll oder nicht.
Falls du dich nicht vom Performance-Denken lösen kannst, überlege dir die Implementation dieser Initialisierung in IL.
Aber die Performance ist in diesem Fall wohl wichtiger
Erst messen.
-
CreativeLabs schrieb:
GEH WEG!
WTF?? >> Was soll das denn??
-
#Darius# schrieb:
CreativeLabs schrieb:
GEH WEG!
WTF?? >> Was soll das denn??
Dem ein oder anderen geht dieser Troll halt früher oder später auf den Sack...