2013-07-30 40 views
10

Tôi đang cố gắng tạo một hàm nhưng tôi nhận được thông báo lỗi.Không thể sử dụng biến cục bộ trước khi được khai báo

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; 

Không thể sử dụng biến cục bộ 'startingRadius' trước khi nó được công bố.

Vấn đề tương tự cũng xảy ra với biến bitmap. Thông thường trong C++ kiểu khai báo này sẽ hoạt động; tuy nhiên, tôi không chắc tại sao nó không hoạt động ở đây.

+2

Lưu ý rằng Bitmap.Height là thuộc tính, vì vậy bạn sẽ chỉ cần 'bitmap.Height' – ChaseMedallion

Trả lời

4

Bạn đang thiếu một cú đúp đóng cửa cho phương pháp của bạn, nhưng nếu không thì mã này có thể biên dịch trên máy tính của tôi ... (thay đổi Height là một tài sản cũng)

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

Có vẻ như bạn có một thất lạc hoặc } tên biến sai chính tả. Tôi thực sự không thể nói mà không nhìn thấy mã đầy đủ.

Thông báo lỗi về cơ bản cho bạn biết rằng bạn có biến cục bộ mà bạn đang cố sử dụng chưa được khai báo. Điều này cho thấy mã if (startingRadius == 1) thực sự nằm trong một phương pháp khác với phương pháp bạn đã khai báo.

26

Trong studio trực quan. Đôi khi bạn khai báo một biến một lần nữa (lần thứ hai). Nó sẽ cho lỗi này. Ví dụ: điều này đôi khi sẽ ném ngoại lệ bạn đã đề cập:

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

Rõ ràng điều này là không chính xác. Vì vậy, việc loại bỏ khai báo thứ hai (trên dòng 4) sẽ giải quyết vấn đề.

Lưu ý: Ngoại lệ bạn thường kỳ vọng sẽ là A local variable named 'startingRadius' is already defined in this scope. Nhưng vì lý do nào đó, ngoại lệ bạn đã đề cập được hiển thị đôi khi.

+0

Đây chính là vấn đề của tôi. Cảm ơn :) –

+0

Điều này sẽ được đánh dấu là câu trả lời. – ShieldOfSalvation

Các vấn đề liên quan