Ein paar verschiedene Möglichkeiten, um das Problem zu lösen:
Gerade Environment.Exit mit Rückkehr ersetzen. Der Compiler weiß, dass return die Methode beendet, aber nicht weiß, dass Environment.Exit das tut.
Natürlich können Sie wirklich nur damit durchkommen, weil Sie in allen Fällen 0 als Ihren Exit-Code verwenden. Eigentlich sollten Sie einen int zurückgeben, anstatt Environment.Exit zu verwenden. Für diesen speziellen Fall würde dies meine bevorzugte Methode
static int Main(string[] args) {
if(args.Length != 0) {
if(Byte.TryParse(args[0], out maxSize))
queue = new Queue(){MaxSize = maxSize};
else
return 1;
} else {
return 2;
}
}
initialisieren Warteschlange zu null sein, die wirklich nur ein Compiler Trick ist, der sagt: „Ich werde meine eigenen nicht initialisierten Variablen herauszufinden, vielen Dank“. Es ist ein nützlicher Trick, aber ich mag es in diesem Fall nicht - Sie haben zu viele Zweige, um leicht zu überprüfen, ob Sie es richtig machen. Wenn Sie wirklich wollten es auf diese Art und Weise zu tun, wie etwas, das wäre klarer sein:
static void Main(string[] args) {
Byte maxSize;
Queue queue = null;
if(args.Length == 0 || !Byte.TryParse(args[0], out maxSize)) {
Environment.Exit(0);
}
queue = new Queue(){MaxSize = maxSize};
for(Byte j = 0; j < queue.MaxSize; j++)
queue.Insert(j);
for(Byte j = 0; j < queue.MaxSize; j++)
Console.WriteLine(queue.Remove());
}
eine return-Anweisung nach Environment.Exit hinzufügen. Auch dies ist eher ein Compiler Trick - aber etwas mehr legit IMO, weil es auch Semantik für den Menschen hinzufügt (wenn man davon aus, dass gepriesene 100% Code Coverage halten werden)
static void Main(String[] args) {
if(args.Length != 0) {
if(Byte.TryParse(args[0], out maxSize)) {
queue = new Queue(){MaxSize = maxSize};
} else {
Environment.Exit(0);
return;
}
} else {
Environment.Exit(0);
return;
}
for(Byte j = 0; j < queue.MaxSize; j++)
queue.Insert(j);
for(Byte j = 0; j < queue.MaxSize; j++)
Console.WriteLine(queue.Remove());
}
Ich kann Ihnen keine Hinweise geben, aber ich hoffe, Sie können diesen Punkt in den Griff bekommen. – wprl