Область действия переменной, то есть область программы, где можно использовать переменную, начинается в точке ее описания и длится до конца блока, внутри которого она описана. Блок — это код, заключенный в фигурные скобки. Основное назначение блока — группировка операторов. В C# любая переменная описана внутри какого-либо блока: класса, метода или блока внутри метода. Имя переменной должно быть уникальным в области ее действия. Область действия распространяется на вложенные в метод блоки.
class X // начало описания класса X
{
int A; // поле A класса X
int B; // поле B класса X
void Y() // ----------------------------------------- метод Y класса Х
{
int C; // локальная переменная C, область действия – метод Y
int A; // локальная переменная A (НЕ конфликтует с полем А)
{ // ============ вложенный блок 1 ============
int D; // локальная переменная D, область действия – этот блок
// int А; недопустимо! Ошибка компиляции, конфликт с локальной
// переменной А
С = B; // присваивание переменной С поля В класса Х (**)
С = this.A; // присваивание переменной С поля А класса Х (***)
} // ============ конец блока 1 ===============
{ // ============ вложенный блок 2 ============
int D; // локальная переменная D, область действия – этот блок
} // ============ конец блока 2 ===============
} // ------------------------- конец описания метода Y класса X
} // конец описания класса X