Примечание. В этой главе рассматриваются только локальные переменные простых встроенных типов данных

В этой главе рассматриваются только локальные переменные простых встроенных типов данных.

Так называемая область действия переменной, то есть область программы, где можно использовать переменную, начинается в точке ее описания и длится до конца блока, внутри которого она описана. Блок — это код, заключенный в фигурные скобки. Основное назначение блока - группировка операторов. В С# любая переменная описана внутри какого-либо блока: класса, метода или блока внутри метода.

Имя переменной должно быть уникальным в области ее действия. Область дей­
ствия распространяется на вложенные в метод блоки, из этого следует, что во
вложенном блоке нельзя объявить переменную с таким же именем, что и в охва­
тывающем его, например:
class X // начало описания класса X

{

int А; // поле А класса X

int В; // поле В класса X

void Y() // метод Y класса X

{

int С; // локальная переменная С, область действия - метод Y

int A; // локальная переменная А (НЕ конфликтует с полем А)

{ // ============ вложенный блок 1 ============

int D; // локальная переменная D. область действия - этот блок

// int А; недопустимо! Ошибка компиляции, конфликт с локальной

// переменной А

С = В; // присваивание переменной С поля В класса X (**)

С = this.А; // присваивание переменной С поля А класса X (***)

} // ============ конец блока 1 ===============

{ // ============ вложенный блок 2 ============

int D; // локальная переменная D. область действия - этот блок

} // ============ конец блока 2 ===============

} // конец описания метода Y класса X

}// конец описания класса X

Давайте разберемся в этом примере. В нем описан класс X, содержащий три элемента: поле А, поле В и метод Y. Непосредственно внутри метода Y заданы две локальные переменные — С и А.

Внутри метода класса можно описывать переменную с именем, совпадающим с полем класса, потому что существует способ доступа к полю класса с помо­щью ключевого слова this (это иллюстрирует строка, отмеченная символами ***). Таким образом, локальная переменная А не «закрывает» поле А класса X, а вот по­пытка описать во вложенном блоке другую локальную переменную с тем же именем окончится неудачей (эти строки закомментированы). Если внутри метода нет локальных переменных, совпадающих с полями класса, к этим полям можно обратиться в методе непосредственно (см. строку, помеченную символами **). Две переменные с именем D не конфликтуют между собой, по­скольку блоки, в которых они описаны, не вложены один в другой.

СОВЕТ

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

В листинге 3.1 приведен пример программы, в которой описываются и выводят­ся на экран локальные переменные.

Листинг 3.1. Описание переменных

using System;

namespace ConsoleApplication1

{

class Class1

{

static void Main()

{

int i = 3;

double у = 4.12;

decimal d = 600m;

string s = "Вася";

Console.Write("i = ");

Console.WriteLine(i);

Console.Write("y = ");

Console.WriteLine(у);

Console.Write("d = ");

Console.WriteLine(d);

Console.Write("s = ");

Console.WriteLine(s);

}

}

}

Как вы догадались, метод Write делает то же самое, что и WriteLine, но не перево­дит строку. Более удобные способы вывода рассмотрены в конце этой главы в разделе «Простейший ввод-вывод» (см. с. 59).

ВНИМАНИЕ

Переменные создаются при входе в их область действия (блок) и уничтожаются при выходе. Это означает, что после выхода из блока значение переменной не сохра­няется. При повторном входе в этот же блок переменная создается заново.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: