2013-07-30 23 views
10

Sto tentando di creare una funzione ma ricevo un messaggio di errore.Impossibile usare la variabile locale prima che venga dichiarata

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; 

Impossibile utilizzare 'startingRadius' variabile locale prima che venga dichiarata.

Lo stesso problema si verifica anche per la variabile bitmap. Normalmente in C++ questo tipo di dichiarazione funzionerebbe; tuttavia, non sono sicuro del motivo per cui non funziona qui.

+2

Si noti che Bitmap.Height è una proprietà, quindi è necessario solo 'bitmap.Height ' – ChaseMedallion

risposta

4

Ti manca una parentesi di chiusura per il metodo ma per il resto di questo codice possibile compilare sulla mia macchina ... (cambio altezza a una proprietà così)

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; 
     } 
1

Suona come si dispone di un fuori luogo o } nomi di variabili errati. Non posso davvero dire senza vedere il codice completo.

Il messaggio di errore indica in sostanza che si dispone di una variabile locale che si sta tentando di utilizzare e che non è stata dichiarata. Il che suggerisce che il codice if (startingRadius == 1) è in realtà all'interno di un metodo diverso rispetto al metodo che hai dichiarato.

26

In studio visivo. A volte quando dichiari di nuovo una variabile (una seconda volta). Darà questo errore. Ad esempio, questo a volte generare l'eccezione lei ha citato:

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

Ovviamente questo non è corretto in ogni caso. Quindi rimuovere la seconda dichiarazione (sulla linea 4) risolverà il problema.

Nota: l'eccezione che si prevede normalmente è A local variable named 'startingRadius' is already defined in this scope. Ma per qualche ragione, l'eccezione che hai citato viene mostrata a volte.

+0

Questo era esattamente il mio problema. Grazie :) –

+0

Questo dovrebbe essere contrassegnato come la risposta. – ShieldOfSalvation

Problemi correlati