tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
464
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Speedkill
    Speedkill Speedkill ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    135
    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:
    [LEFT]
    1. public void doNothing() {
    2. for (int i=0; i<6; ++i) {
    3. int test = i;
    4. }
    5. int test = 5;
    6. }
    [/LEFT]


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

    Danke
    Grüße Speedy
     
    Hinter dir.... ein dreiköpfiger Affe!

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    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
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    Avatar von Speedkill
    Speedkill Speedkill ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    135
    Das ist der CodeSnippet wie ich ihn zum Testen eingegeben habe:

    csharp Code:
    [LEFT]
    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. }
    [/LEFT]


    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.
     
    Hinter dir.... ein dreiköpfiger Affe!

  4. #4
    Avatar von Speedkill
    Speedkill Speedkill ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    135
    Wieso macht mir der Editor hier immer den Csharpcode kaputt indem er dieses LEFT einfügt ?
    Hat jemand von euch auch das Problem ?
     
    Hinter dir.... ein dreiköpfiger Affe!

  5. #5
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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.
     

  6. #6
    Avatar von Speedkill
    Speedkill Speedkill ist offline Mitglied Gold
    Registriert seit
    Nov 2004
    Beiträge
    135
    Aha ....

    Super .. Danke für die Antwort.

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

    Grüße
    Speedkill
     
    Hinter dir.... ein dreiköpfiger Affe!

  7. #7
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Ja hast du, aber kommt in den besten Familien mal vor
     

Ähnliche Themen

  1. Variablen Gültigkeit
    Von 5Rad im Forum .NET Application und Service Design
    Antworten: 4
    Letzter Beitrag: 02.04.11, 23:32
  2. Klassen und Gültigkeit von Variablen
    Von dadom110 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 06.11.09, 22:06
  3. Gültigkeit von Variablen
    Von fr3akone im Forum PHP
    Antworten: 3
    Letzter Beitrag: 08.05.05, 06:41
  4. Variablen Gültigkeit
    Von mahosand im Forum PHP
    Antworten: 1
    Letzter Beitrag: 20.10.04, 17:16
  5. Gültigkeit von Sessions?
    Von Ruediger im Forum PHP
    Antworten: 1
    Letzter Beitrag: 26.07.02, 17:00