web-dev-qa-db-fra.com

Impossible d'utiliser la variable locale avant sa déclaration

J'essaie de créer une fonction mais je reçois un message d'erreur.

public int[] genericSearch(int searchWidth, int startingRadius, int width, int height, Bitmap bitmap)
{
    //Generic function for finding the best path from a certain range
    if (startingRadius == -1)
        startingRadius = bitmap.Height() / 2;

Impossible d'utiliser la variable locale 'startingRadius' avant sa déclaration.

Le même problème se produit également pour la variable bitmap. Normalement, en c ++, ce type de déclaration fonctionnerait; Cependant, je ne sais pas pourquoi cela ne fonctionne pas ici.

12
user1084113

En studio visuel. Parfois, lorsque vous déclarez à nouveau une variable (une seconde fois). Cela donnera cette erreur. Par exemple, cela jettera parfois l'exception que vous avez mentionnée:

 1.  int startingRadius = 0;
 2.  startingRadius = 5; <-- Exception thrown here.
 3.  
 4.  int startingRadius = 0;

De toute évidence, c'est faux de toute façon. Donc, supprimer la deuxième déclaration (ligne 4) résoudra le problème.

Remarque: L'exception à laquelle vous vous attendez normalement serait A local variable named 'startingRadius' is already defined in this scope. Mais pour une raison quelconque, l'exception que vous avez mentionnée est parfois indiquée.

38
gunwin

Il manque une accolade de fermeture pour votre méthode, mais sinon, ce code peut être compilé sur ma machine ...

public int[] genericSearch(int searchWidth, int startingRadius, int width, int height,Bitmap bitmap)
         {
         //Generic function for finding the best path from a certain range
             if (startingRadius == -1)
                 startingRadius = bitmap.Height / 2;
         }
4
Kevin

On dirait que vous avez un } égaré ou des noms de variables mal orthographiés. Je ne peux pas vraiment dire sans voir le code complet.

Le message d'erreur vous indique en gros que vous essayez d'utiliser une variable locale qui n'a pas été déclarée. Ce qui suggère que le code if (startingRadius == 1) est en réalité dans une méthode différente de celle que vous avez déclarée.

1
Stephen