2013-07-30 18 views
10

Próbuję utworzyć funkcję, ale pojawia się komunikat o błędzie.Nie można użyć zmiennej lokalnej przed deklaracją

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; 

Nie można użyć zmiennej lokalnej 'startingRadius' zanim zostanie ogłoszony.

Ten sam problem występuje również w przypadku zmiennej bitmapowej. Normalnie w C++ ten typ deklaracji zadziałałby; jednak nie jestem pewien, dlaczego nie działa tutaj.

+2

Zauważ, że Bitmap.Height jest właściwością, więc będziesz potrzebować tylko 'bitmap.Height' – ChaseMedallion

Odpowiedz

4

Brakuje klamrę zamykającą dla metody, ale w przeciwnym razie ten kod można skompilować na moim komputerze ... (zmiana Wysokość do nieruchomości, jak również)

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

Brzmi jak masz lub niesłuszna } niepoprawnie wpisane nazwy zmiennych. Naprawdę nie mogę powiedzieć, nie widząc pełnego kodu.

Komunikat o błędzie mówi zasadniczo, że masz zmienną lokalną, której próbujesz użyć, która nie została zadeklarowana. Co sugeruje, że kod if (startingRadius == 1) znajduje się w innej metodzie niż metoda, którą zadeklarowałeś.

26

W studio graficznym. Czasami, gdy ponownie zadeklarujesz zmienną (drugi raz). Daje ten błąd. Na przykład czasami spowoduje to odrzucenie wyjątku, o którym wspomniałeś:

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

Oczywiście jest to niepoprawne. Usunięcie drugiej deklaracji (w linii 4) rozwiąże problem.

Uwaga: Wyjątek, którego można normalnie oczekiwać, to A local variable named 'startingRadius' is already defined in this scope. Ale z jakiegoś powodu wymieniony wyjątek jest czasami wyświetlany.

+0

To był dokładnie mój problem. Dzięki :) –

+0

To powinno być oznaczone jako odpowiedź. – ShieldOfSalvation