Введение в теорию программирования. Объектно-ориентированный подход


Основные понятия языка программирования C# - часть 2


Аналогом оператора блока в языках функционального программирования является функция.

В языке программирования С# выделяют различные виды блоков, которые можно проиллюстрировать следующим примером:

void foo (int x) { // блок методов ... локальные переменные ... { // вложенный блок ... локальные переменные ... } for (int i = 0; ...) { // блок структурированных // операторов ... локальные переменные ... } }

Как видно из примера, блоки объединяют (структурированные) операторы и методы. Допускается использование блоков, вложенных один в другой. Для удобочитаемости текста программы глубину вложенности блока лучше визуализировать посредством табуляции.

Рассмотрим подробнее особенности описания локальных переменных в языке программирования C# на следующем примере программы:

void foo(int a) { int b; if (...) { int b; // ошибка: переменная b уже // описана в другом блоке int c; // пока описание корректно, // однако ... int d; ... } else { int a; // ошибка: переменная а уже // описана во внешнем блоке int d; // конфликтов с переменной d // из предыдущего блока нет } for (int i=0;...){ ... } for (int i=0;...){ ... } // фрагмент корректен: нет // конфликтов с переменной // i из предыдущего // цикла int c; // ошибка: c уже описана в // данном пространстве имен }

Рассмотрим функцию foo с одним целочисленным аргументом a, которая не возвращает значения.

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

Заметим попутно, что условный оператор if...else языка C# весьма схож с подобным оператором языка SML, а оператор for является оператором цикла.

Рассмотрим более сложный пример использования пространств имен в языке программирования C#.

Пусть программный проект на языке программирования C# содержит три файла с описаниями структур данных, оформленными в виде отдельных пространств имен:

Color.cs namespace Util { public enum Color { ... } }

Figures.cs namespace Util.Figures { public class Rect { ... } public class Circle { ... } }




Начало  Назад  Вперед



Книжный магазин