Gültigkeit von Variablen ......

Speedkill

Erfahrenes Mitglied
Kann mir bitte einer erklären warum ich "test" nach der Schleife nicht neu deklarieren darf ?
Der Compiler meckert :

C:\Dokumente und Einstellungen\ferdinat\Eigene Dateien\Visual Studio Projects\TopoCrawler\TopoCrawler\Test.cs(28): Der Name 'test' besteht nicht in der Klasse oder dem Namespace 'TopoCrawler.Test'
C:\Dokumente und Einstellungen\ferdinat\Eigene Dateien\Visual Studio Projects\TopoCrawler\TopoCrawler\Test.cs(28): Eine lokale Variable 'test' kann in diesem Gültigkeitsbereich nicht deklariert werden, weil es 'test' eine andere Bedeutung geben würde, die bereits in einem 'Untergeordnet'-Gültigkeitsbereich verwendet wurde, um auf etwas anderes hinzudeuten.


csharp Code:
  1. public void doNothing() {
  2. for (int i=0; i<6; ++i) {
  3. int test = i;
  4. }
  5. int test = 5;
  6. }


Der Gültigkeitsbereich von test sollte sich doch nur auf innerhalb der Schleife beziehen.

Danke
Grüße Speedy
 
Dem Konstrukt nach sollte es aber gehen. Poste doch mal das richtige Snipped.

Was aber absoluter Nonsens ist, Variablen innerhalb von wieder kehrenden Durchläufen zu deklarieren.
Da wird jedes mal ein neues Objekt angelegt, ergo speicher verschwendet.
Deklarier die Hilfsvariablen außerhalb und initialisier sie dann innerhalb.
Denn dann wird immer wieder der gleiche Speicherbereich verwendet.

MfG,
cosmo
 
Das ist der CodeSnippet wie ich ihn zum Testen eingegeben habe:

csharp Code:
  1. class Test {
  2. [STAThread]
  3. static void Main (string[] args) {
  4. }
  5. public void doNothing() {
  6. for (int i=0; i<6; ++i) {
  7. int test = i;
  8. }
  9. int test = 5;
  10. }
  11. }


Der OriginalCode wäre hier viel zu lang. Aber die Fehlermeldung ist ja zum Glück reproduzierbar.
Ich benutze VS 2003, liegt da vielleicht ein IDE bzw. Compiler Fehler vor ?


Grüße
Speedy

P.S.: Daß diese Deklaration Schwachfug ist wußte ich schon, trotzdem Danke für den Hinweis. Ich bin halt eher zufällig drübergestolpert als ich eben jenen Codepart am überarbeiten war.
 
Wieso macht mir der Editor hier immer den Csharpcode kaputt indem er dieses LEFT einfügt ?
Hat jemand von euch auch das Problem ?
 
Dieser "Fehler" ist auch ganz klar. Variablen-Deklarationen werden vor allem anderen beachtet. Daher ist es so, dass der Gültigkeit von test nicht erst nach der Schleife beginnt, sondern test innerhalb der gesamten Methode Gültigkeit hat. Richtigerweise sollte der Debugger also bei der Verwendung innerhalb der for-Schleife meckern.

Daher Variablen-Deklarationen IMMER an den Anfang schreiben, damit man diese auch schön im ersten Blickfeld hat.
 
Aha ....

Super .. Danke für die Antwort.

Ich dachte mir schon fast daß ich zu prozedural überlegt hatte.

Grüße
Speedkill
 

Neue Beiträge

Zurück