Нельзя использовать локальную переменную до ее объявления

Я пытаюсь создать функцию, но получаю сообщение об ошибке.

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;

Нельзя использовать локальную переменную "startRadius" до ее объявления.

Аналогичная проблема возникает и для битмап-переменной. Обычно в С++ этот тип декларации будет работать; однако я не уверен, почему он здесь не работает.

Ответ 1

В визуальной студии. Иногда, когда вы снова объявляете переменную (второй раз). Это даст эту ошибку. Например, это иногда вызывает исключение, которое вы упомянули:

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

Очевидно, что это неверно. Поэтому удаление второй декларации (в строке 4) решит проблему.

Примечание. Исключением, которое вы обычно ожидали, будет A local variable named 'startingRadius' is already defined in this scope. Но по какой-то причине исключение, о котором вы говорили, иногда показано.

Ответ 2

Вам не хватает закрывающей скобки для вашего метода, но в противном случае этот код может скомпилироваться на моей машине... (также изменил значение Height на свойство)

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

Ответ 3

Похоже, что у вас есть неправильные имена переменных } или с ошибками. Я не могу сказать, не видя полного кода.

Сообщение об ошибке в основном говорит вам, что у вас есть локальная переменная, которую вы пытаетесь использовать, которая не была объявлена. Это говорит о том, что код if (startingRadius == 1) фактически находится внутри другого метода, чем указанный вами метод.