C # -Fehler: Verwendung von nicht zugewiesenen lokalen Variablen
Ich bin mir nicht sicher, warum ich immer diese Fehler, aber nicht diesen code zu kompilieren, da bin ich schon überprüfen, um zu sehen, ob die Warteschlange wird immer initialisiert?
public static void Main(String[] args)
{
Byte maxSize;
Queue queue;
if(args.Length != 0)
{
if(Byte.TryParse(args[0], out maxSize))
queue = new Queue(){MaxSize = maxSize};
else
Environment.Exit(0);
}
else
{
Environment.Exit(0);
}
for(Byte j = 0; j < queue.MaxSize; j++)
queue.Insert(j);
for(Byte j = 0; j < queue.MaxSize; j++)
Console.WriteLine(queue.Remove());
}
Also, wenn die Warteschlange ist nicht initialisiert, dann wird die for-Schleifen sind nicht erreichbar, richtig? Da das Programm bereits beendet mit der Umwelt.Exit(0)?
Hoffe, ya ' ll kann mir einige Hinweise geben 🙂
Dank.
InformationsquelleAutor der Frage jkidv | 2008-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der compiler nicht weiß, dass in der Umgebung.Exit() beendet das Programm; er sieht nur Sie die Ausführung einer statischen Methode auf einer Klasse. Nur initialisieren
queue
auf null, wenn Sie ihn deklarieren.InformationsquelleAutor der Antwort tvanfosson
Der compiler nicht weiß, die Umwelt.Exit() nicht zurück. Warum nicht einfach "zurück" aus der Main()?
InformationsquelleAutor der Antwort Brian
Ein paar verschiedene Möglichkeiten, um das problem zu lösen:
Ersetzen Sie einfach Umgebung.Beenden Sie mit return. Der compiler weiß, dass return beendet die Methode, aber nicht wissen, dass Umwelt.Beenden tut.
Natürlich können Sie wirklich nur Weg, denn Sie sind mit " 0 " als Ihre exit-code in allen Fällen. Wirklich, sollten Sie Sie wieder ein int statt mit Umgebung.Exit. Für diesen speziellen Fall, das wäre meine bevorzugte Methode
Initialisieren der Warteschlange auf null, das ist wirklich nur ein compiler-trick, der sagt "ich werde herausfinden, meine eigenen, nicht initialisierte Variablen, ich danke Ihnen sehr". Es ist ein nützlicher trick, aber ich weiß nicht wie es in diesem Fall - Sie haben zu viele, wenn die Zweige zu leicht überprüfen, dass Sie tun es richtig. Wenn Sie wirklich wollte, es zu tun auf diese Weise, so etwas klarer wäre:
Fügen Sie eine return-Anweisung nach der Umgebung.Exit. Wieder, dies ist eher ein compiler-trick - aber etwas mehr legit IMO, denn er fügt Semantik für den Menschen als gut (obwohl es halten Sie aus, dass die berühmt-berüchtigte 100% code coverage)
InformationsquelleAutor der Antwort Mark Brackett
Der compiler weiß nur, dass der code oder ist nicht erreichbar, wenn Sie "return". Denke der Umwelt.Exit() als Funktion, die Sie aufrufen, und der compiler weiß nicht, dass es die Anwendung schließen.
InformationsquelleAutor der Antwort Nelson Reis