Wo Variablen am besten deklarieren?

Hallo Leute,

ich weiß nicht, ob dieses Thema besser bei .NET aufgehoben ist, aber ich versuche mein Glück hier:

Wie gesagt programmiere ich gerade in C#.NET und habe mich gefragt, ob es geschwindigkeitsmäßig einen Unterschied macht, ob ich Variablen, die ausschließlich beispielsweise in einer Schleife verwendet werden, außerhalb der Schleife deklariere oder im Schleifenblock selbst.

Hat das mal jemand getestet oder kann mir sogar erklären, was bei der Deklaration hinter dem Compiler vor sich geht? Da wird doch sicher Speicher zugewiesen. Könnte es sein dass da dann zur Laufzeit bei jedem Schleifendurchlauf etwas zugewiesen oder zumindest verglichen wird, was gar nicht nötig wäre, wenn die entsprechende Variable außerhalb der Schleife deklariert worden wäre?

Gruß
Alexander

Moin

Wie gesagt programmiere ich gerade in C#.NET und habe mich
gefragt, ob es geschwindigkeitsmäßig einen Unterschied macht,
ob ich Variablen, die ausschließlich beispielsweise in einer
Schleife verwendet werden, außerhalb der Schleife deklariere
oder im Schleifenblock selbst.

Wenn sich das Ding gleich verhält wie der java-compiler (bei dem sich MS ja kräftig „inspiriert“ hat) ist es wurscht. Der Compiler sammelt alle Variabeln die innerhalb einer Methode verwendet werden ein und legt sie schon beim Aufruf der Methode an.

cu

von der Geschwindigkeit gibt es kaum Unterschiede. Vom Konzept der Sichtbarkeit ist jedoch die Variante der lokalen Variablen eindeutig zu bevorzugen! Dadurch werden schwer aufzufindende Programmierfehler vermieden und Speicherleichen vermieden. Lokale Variablen werden automatisch bei Verlassen ihres Gültigkeitsbereichs vom Garbage Collector aus dem Hauptspeicher entfernt…

Hallo Leute,

ich weiß nicht, ob dieses Thema besser bei .NET aufgehoben
ist, aber ich versuche mein Glück hier:

Wie gesagt programmiere ich gerade in C#.NET und habe mich
gefragt, ob es geschwindigkeitsmäßig einen Unterschied macht,
ob ich Variablen, die ausschließlich beispielsweise in einer
Schleife verwendet werden, außerhalb der Schleife deklariere
oder im Schleifenblock selbst.

Hallo
Bei VB ist es ganz klar so:
Man defininiert seine Variablen dort, wo man sie benötigt.
Wenn sie innerhalb der Sub Routine definiert werden, gibts am wenigsten Probleme, wie auch schon ein andere geschrieben hat.
Innerhalb der Schleife kann man ( in VB ) keine Variable definieren, weil es dann schon zu spät ist, bzw. schon vorher eine Variable benötigt wird, weil ja ein Wert zugewiesen werden soll.
Es spielt aber auch eine Rolle, wie die Optionen, (Option Explicit fordert jedesmal eine definierte Variable was gegenüber der undefinierten Variablen ( = Typ Variant ) Prozessorzeit und Ram-Speicher spart) eingestellt sind.
Man vergesse auch nicht den Typ Static, welcher gleich bei wiederholtem Aufruf bleibt.
MfG