×
Traktatov.net » C# 4.0: полное руководство » Читать онлайн
Страница 42 из 650 Настройки

И последнее замечание: одновременно можно объявить только одну неявно типизированную переменную. Поэтому объявление


>var s1 =4.0, s2=5.0; // Ошибка!


является неверным и не может быть скомпилировано. Ведь в нем предпринимается попытка объявить обе переменные, s1 и s2, одновременно.


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

Все переменные, использовавшиеся в предыдущих примерах программ, объявлялись в самом начале метода Main(). Но в C# локальную переменную разрешается объявлять в любом кодовом блоке. Как пояснялось в главе 2, кодовый блок начинается открывающей фигурной скобкой и оканчивается закрывающей фигурной скобкой. Этот блок и определяет область действия. Следовательно, всякий раз, когда начинается блок, образуется новая область действия. Прежде всего область действия определяет видимость имен отдельных элементов, в том числе и переменных, в других частях программы без дополнительного уточнения. Она определяет также время существования локальных переменных.

В C# к числу наиболее важных относятся области действия, определяемые классом и методом. Рассмотрение области действия класса (и объявляемых в ней переменных) придется отложить до того момента, когда в этой книге будут описываться классы. А до тех пор будут рассматриваться только те области действия, которые определяются методом или же в самом методе.

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

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

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

Для того чтобы стала более понятной сущность вложенных областей действия, рассмотрим следующий пример программы.


>// Продемонстрировать область действия кодового блока,

>using System;

>class ScopeDemo {

>  static void Main() {

>    int x; // Эта переменная доступна для всего кода внутри метода Main().

>    x = 10;

>    if (x == 10)    {  // начать новую область действия

>      int у = 20; // Эта переменная доступна только в данном кодовом блоке.


>      // Здесь доступны обе переменные, х и у.

>      Console.WriteLine("х и у: " + x + " " + у);

>      x = у * 2;

>    }

>    // у = 100; // Ошибка! Переменна у здесь недоступна.

>    //А переменная х здесь по-прежнему доступна.