Entwickler-Ecke

Basistechnologien - Verwendung einer nicht zugewiesenen lokalen Variablen?


M-Cha - Do 17.12.09 14:49
Titel: Verwendung einer nicht zugewiesenen lokalen Variablen?
Ich habe eine Methode gebaut und er gibt mir immer diesen Fehler aus:

Verwendung der nicht zugewiesenen lokalen Variablen "car"!

Kann mir da jemand helfen bitte?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
       public string toGarage()
       {
           string car;

           foreach (Fuhrpark name in names)
           {
               car = car + names.toXML();
           }
           return car;
       }


danielf - Do 17.12.09 15:04

Bevor du eine Variable verwenden kannst, musst sie einen Wert haben.

Bei einigen Typen (wie zum Beispiel der Numerischen int, double ...) setzt der Kompiler von sich aus einen Standardwert (0). Wenn es Kompiler es nicht macht musst du selber einen initialen Wert zuweisen.

Gruß Daniel

PS: Ich glaub ich hab es dir schonmal gesagt: Wenn man strings zusammenfügt sollte man aus Performanzgründen den StringBuilder verwenden.


M-Cha - Do 17.12.09 15:23

Ja hab ich diesmal auf die schnelle wieder vergessen. Ups :-)

Aber das ist auch nicht gerade das Wahre.... jetzt sagt er: "Nicht alle Codepfade geben einen Wert zurück."


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
    public string toGarage()
       {
           //string car;

           foreach (Fuhrpark name in names)
           {
               //car = car + names.toXML();

               return string.Format("{0}", names.toXML());
           }
       }


danielf - Do 17.12.09 15:27

Und was sagt dir die Fehlermeldung?

Überleg doch:
Welche Codepfade gibt es?
Wann wird welcher durchlaufen?


M-Cha - Do 17.12.09 15:37

Schon gelöst. Ich sollte mal etwas länger überlegen!


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 public string toGarage()
       {
           string car = "";

           foreach (Fuhrpark name in names)
           {
               car = car + names.toXML();
           }
return car;
       }


So geht es!


danielf - Do 17.12.09 15:41

Jepp ;)


Kha - Do 17.12.09 23:16

Der Vollständigkeit halber:

user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:
Bei einigen Typen (wie zum Beispiel der Numerischen int, double ...) setzt der Kompiler von sich aus einen Standardwert (0).
Nein, das macht er bei keinem Typ einer lokalen Variablen. Klassenfelder werden dagegen (standardmäßig) immer mit default(T) initialisiert.


Ralf Jansen - Do 17.12.09 23:42


C#-Quelltext
1:
2:
3:
4:
foreach (Fuhrpark name in names)
{
    car = car + names.toXML();
}


Mal so nebenbei warum iterierst du über names benutzt aber die Einzelwerte (name) dann nicht sondern nur wieder die Liste names :gruebel:


M-Cha - Fr 18.12.09 12:20

Mein Natürlich name!

War ein Schreibfehler von mir!


C#-Quelltext
1:
2:
3:
4:
foreach (Fuhrpark name in names)
{
    car = car + name.toXML();
}