web-dev-qa-db-fra.com

Erreur C #: utilisation d'une variable locale non affectée

Je ne sais pas pourquoi j'obtiens cette erreur, mais ce code ne devrait-il pas être compilé, car je vérifie déjà si la file d'attente est en cours d'initialisation?

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());
}

Donc, si la file d'attente n'est pas initialisée, les boucles for ne sont pas accessibles, n'est-ce pas? Comme le programme se termine déjà avec Environment.Exit (0)?

J'espère que vous pourrez me donner quelques conseils :)

Merci.

28
jkidv

Le compilateur ne sait pas que Environment.Exit () va terminer le programme; il vous voit juste exécuter une méthode statique sur une classe. Initialisez simplement queue à null lorsque vous le déclarez.

Queue queue = null;
75
tvanfosson

Le compilateur ne sait pas que Environment.Exit () ne retourne pas. Pourquoi ne pas simplement "revenir" de Main ()?

9
Brian

Le compilateur sait seulement que le code est ou n'est pas accessible si vous utilisez "return". Considérez Environment.Exit () comme une fonction que vous appelez, et le compilateur ne sait pas qu'il fermera l'application.

0
Nelson Reis