Урок 45. Область видимости переменной C#


На сорок пятом уроке учебника по основам C# обсуждается понятие области видимости переменных. Область видимости переменной определяет ее время существования и управляет ее видимостью и доступностью для каждого из методов в программе.

Что такое области видимости переменной?

Область видимости переменной определяет ее доступность для остальной части программы. В примерах, приведенных в учебнике по основам C#, переменные были определены в методах. При создании таким образом, область действия переменной - это весь метод после объявления. Это означает, что переменная доступна для использования в рамках метода, но когда управление переходит к другому методу, переменная недоступна.

Существуют и другие возможности для области видимости переменной. Например, переменная может быть объявлена в цикле или другой структуре кода и быть видимой только для кода в структуре. Переменная с более широкой областью действия может быть объявлена на уровне класса, чтобы ее можно было использовать любым методом внутри класса. Фактически, область видимости переменной всегда является полным экстентом блока кода, в котором она объявлена.

Как было показано на протяжении всех уроков учебника, блоки кода могут быть вложенными. Цикл внутри метода в классе обеспечивает три уровня вложенных блоков кода и, следовательно, три уровня вложенной области. Если переменная объявлена в одной из этих вложенных областей, она видна только для текущей области и всех областей, вложенных в нее. Это означает, что переменная, объявленная в цикле, не видна вне этого цикла, тогда как переменная, объявленная вне цикла, также видна внутри цикла.

Область действия на уровне класса

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

Область действия на уровне метода

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

static void Main(string[] args)
{
    int score;                                          // объявлено на уровне метода
    score = 100;                                        // используется на уровне метода
 
    if (score >= 50)
        Console.WriteLine("Good score : {0}", score);   // используется во вложенной области
    else
        Console.WriteLine("Poor score : {0}", score);   // используется во вложенной области

}
Вложенная область

Как написано выше, переменные, объявленные во вложенной области, недоступны для тех, кто находится за пределами их блока кода. Следующий код не будет компилироваться, поскольку переменная, которую пытаются использовать на уровне метода, объявляется в более глубоко вложенной области оператора if.

static void Main(string[] args)
{
    int score = 100;
 
    if (score >= 50)
        string message = "Good score";                  // объявлено в операторе if
    else
        string message = "Poor score";                  // объявлено в операторе if
 
    Console.WriteLine(message);                         // переменная недоступна
}
Примечание: чтобы этот пример работал, переменная должна быть объявлена перед оператором if, а уже в нем назначено значение.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, уроки по си шарп, переменные




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Недорогие смс
Анализ алгоритмов: математические модели
Помощь по программированию на Java