Кроме этого, имеются переменные, определенные в блоке и связанные с некоторыми конструкциями (for
, foreach). В этом случае действие переменной i простирается до конца соответствующей конструкции. Так, следующий код корректен:var
a: array of integer := (3,5,7);for
i: integer := 1 to 9 dowrite(a[i]);
foreach
i: integer in a dowrite(i);
Идентификатор с тем же именем, определенный во вложенном пространстве имен,
var
i: integer;procedure
p;var
i: integer;begin
i := 5;
end
;значение 5 будет присвоено переменной i, описанной в процедуре p; внутри же процедуры p сослаться на глобальную переменную i невозможно.
Переменные, описанные внутри блока, не могут иметь те же имена, что и переменные из раздела описаний этого блока. Например, следующая программа ошибочна:
var
i: integer;begin
var
i: integer; // ошибкаend
.В производных классах, напротив, можно определять члены с теми же именами, что и в базовых классах, при этом их имена скрывают соответствующие имена в базовых классах. Для обращения к одноименному члену базового класса из метода производного класса используется ключевое слово inherited
:type
A=class
i: integer;
procedure
p;begin
i := 5;
end
;end
;B=class
(A)i: integer;
procedure
p;begin
i := 5;
inherited
p;end
;end;
uses
unit1,unit2;begin
id := 2;
end
.описание переменной id будет искаться вначале в основной программе, затем в модуле unit2, затем в модуле unit1. При этом в разных модулях могут быть описаны разные переменные id. Данная ситуация означает, что unit1 образует внешнее пространство имен, пространство имен unit2 в него непосредственно вложено, а пространство имен основной программы вложено в unit2.
Если в последнем примере оба модуля - unit1 и unit2 - определяют переменные id, то рекомендуется уточнять имя переменной именем модуля, используя конструкцию
uses
unit1,unit2;begin
unit1.id := 2;
end
.Типы данных
Обзор типов
Типы в PascalABC.NET
подразделяются на простые, строковые, структурированные, типы указателей, процедурные типы и классы.К
К
Все простые типы, кроме вещественного, называются
Все типы, кроме типов указателей, являются производными от типа Object. Каждый тип в PascalABC.NET
имеет отображение на тип .NET. Тип указателя принадлежит к неуправляемому коду и моделируется типом void*.Все типы в PascalABC.NET подразделяются на две большие группы:
Список типов .NET
* Целые типы Вещественные типы Логический тип Символьный тип Перечислимый и диапазонный типы Статические массивы Динамические массивы Записи Множества Файлы Указатели Процедурный тип Последовательности Классы
Размерные и ссылочные типы
Все типы в PascalABC.NET подразделяются на две большие группы: