none
Переменная не существует в текущем контексте RRS feed

  • Вопрос

  • Здравствуйте. Есть код, который находится в том же классе, что и метод Main(). Вот он:
     static decimal Price()
        {
    
            ConsoleKeyInfo key;
            string price = null;
            bool a = false;
    
            do
            {
                key = Console.ReadKey(true);
                if ((key.KeyChar >= '0' && key.KeyChar <= '9') || (key.KeyChar == '.') || (key.KeyChar == ','))
    
                {
                    Console.Write(key.KeyChar);
                    price = price + key.KeyChar.ToString();
                }
                else if (key.Key != ConsoleKey.Enter)
                {
    
                    if (price != null)
                    {
                        Console.WriteLine();
                        Console.WriteLine("Введен недопустимый символ!");
                        a = true;
                    }
                    if (a == true && price == null) a = false;
                    price = null;
                    if ((price == null) && (a != true)) Console.WriteLine("Введен недопустимый символ!");
    
                }
    
            }
            while (key.Key != ConsoleKey.Enter);
            Console.WriteLine();
            return Convert.ToDecimal(price);
        }
    

    Почему при попытке использовать переменную "price" в методе Main() обозначается ошибка: "Имя "price" не существует в текущем контексте"?
    27 сентября 2015 г. 14:53

Ответы

  • Вы не переменную возвращаете, а результат вычислений метода, куда эту самую переменную передаете. Поэтому её нужно объявить перед этим.

    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа AlexFV 27 сентября 2015 г. 19:30
    • Помечено в качестве ответа Ermak1 27 сентября 2015 г. 19:40
    27 сентября 2015 г. 17:22
    Модератор

Все ответы

  • Насколько я понял у вас переменная price объявлена внутри другого метода Price(), а нужно её объявить внутри метода Main. Объявление переменной ограничивается методом.

    Сделаем содержимое сообщества лучше, вместе!

    27 сентября 2015 г. 15:55
    Модератор
  • Насколько я понял у вас переменная price объявлена внутри другого метода Price(), а нужно её объявить внутри метода Main. Объявление переменной ограничивается методом.

    Сделаем содержимое сообщества лучше, вместе!

    Да, вы правы. Но ведь я возвращаю переменную price вызывающему коду в строчке:
    return Convert.ToDecimal(price);


    27 сентября 2015 г. 17:08
  • Вы не переменную возвращаете, а результат вычислений метода, куда эту самую переменную передаете. Поэтому её нужно объявить перед этим.

    Сделаем содержимое сообщества лучше, вместе!

    • Предложено в качестве ответа AlexFV 27 сентября 2015 г. 19:30
    • Помечено в качестве ответа Ermak1 27 сентября 2015 г. 19:40
    27 сентября 2015 г. 17:22
    Модератор
  • Вы не переменную возвращаете, а результат вычислений метода, куда эту самую переменную передаете. Поэтому её нужно объявить перед этим.

    Сделаем содержимое сообщества лучше, вместе!


    Спасибо.
    27 сентября 2015 г. 18:51