Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


5.2. Блок или составной оператор

С помощью фигурных скобок несколько операторов языка (возможно, перемежаемых объявлениями) можно объединить в единую синтаксическую конструкцию, называемую блоком или составным оператором:

{
оператор_1

оператор_N
}

Синтаксически блок воспринимается как единичный оператор и может использоваться всюду в конструкциях, где синтаксис требует одного оператора. Тело цикла, ветви оператора if, как правило, представляются блоком. Приведем достаточно формальный и слегка запутанный пример, где тело процедуры представлено блоком, в котором есть встроенные блоки, задающие тело оператора цикла for и тела ветвей оператора if:

/// <summary>
/// демонстрация блоков (составных операторов)
/// </summary>
public void Block() {
          // начало процедуры Block()
          int limit = 100;
          int x = 120, y = 50;
          int sum1 = 0, sum2 = 0;
          for (int i = 0; i < 11; i++) {
            // начало блока оператора for
            int step = Math.Abs(limit - x)/10;
            if (x > limit) {
                        // начало блока «то» оператора if
                        x -= step;
                        y += step;
            } // конец блока «то» оператора if
            else {  // начало блока «иначе» оператора if
                        x += step;
                        y -= step;
             } // конец блока «иначе» оператора if
            sum1 += x;
            sum2 += y;
          } // конец блока оператора for
     //limit = step;
     //переменная step перестала существовать
     //limit = i;
     // переменная i перестала существовать
     Console.WriteLine("x= {0}, y= {1}, sum1 ={2}, sum2 = {3}", x, y, sum1, sum2);
} //конец процедуры Block()

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

В свою очередь, в тело цикла вложены блоки, связанные с ветвями then и else оператора if. Закомментированные операторы, стоящие сразу за окончанием цикла, напоминают, что соответствующие локальные переменные, определенные в блоке, перестают существовать по его завершении.

Приведенная процедура Block является методом класса Testing, который входит в проект Statements. Вот описание полей и конструктора класса Testing:

/// <summary>
/// Класс Testing - тестирующий класс. Представляет набор
/// скалярных переменных и методов тестирующих работу
/// с операторами, процедурами и функциями C#.
/// </summary>
public class Testing {
          public Testing(string name, int age) {
            this.age = age;
            this.name = name;
          }
          //поля класса
           public string name;
           public int age;
          private int period;
          private string status;
}

 



<< ПредыдущаяОглавлениеСледующая >>