Операции is и as

Операции is и as

Операция is предназначена для проверки того, имеет ли классовая переменная указанный динамический тип. Операция as позволяет безопасно преобразовать переменную одного классового типа к другому классовому типу (в отличие от явного приведения классового типа).

Операция is имеет вид:

a is ClassType

и возвращает True если a принадлежит к классу ClassType или одному из его потомков.

Например, если Base и Derived - классы, причем, Derived - потомок Base, переменные b и d имеют соответственно типы Base и Derived, то выражения b is Base и d is Base возвращают True, а b is Derived - False.

Операция as имеет вид:

a as ClassType

и возвращает ссылку на объект типа ClassType если преобразование возможно, в противном случае возвращает nil.

Например, в программе

type

Base = class

end;

Derived = class(Base)

procedure p;

begin

end;

end;

var b: Base;

begin

b := new Base;

writeln(b is Derived);

b := new Derived;

writeln(b is Derived);

end.

первый раз выводится False, второй - True.

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

1 способ.

if b is Derived then

Derived(b).p;

2 способ.

var d: Derived := b as Derived;

d.p;

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

16.1. Операции tty

Из книги автора

16.1. Операции tty Устройства tty предоставляют огромное количество опций обработки данных; они относятся к наиболее сложным устройствам ядра. Настраивать можно опции обработки входных и выходных данных, а также потока данных. Также можно контролировать ограниченное


Код операции MI

Из книги автора

Код операции MI В таблице 4.14 показано назначение битов кода операции MI. Бит 3 задает вычислительный или невычислительный формат команды. Во втором случае функция, которая должна быть выполнена, закодирована в битах 5-15 кода операции. Функция, выполняемая вычислительной


Операции

Из книги автора

Операции Операция представляет собой любой шаг или функцию, чье мысленное или физическое выполнение имеет поставленную цель. Операции включают в себя всю работу руководителей и технического персонала по выполнению задач проекта и


Операции += и -=

Из книги автора

Операции += и -= Если вы изучаете C#, уже имея опыт использования C++, то можете обратить внимание на отсутствие возможности перегрузки операторных сокращений, включающих операцию присваивания (+=, -= и т.д.). Не волнуйтесь, в C# операторные сокращения с присваиванием


III. Операции отношения

Из книги автора

III. Операции отношения Каждая из этих операций сравнивает значение слева со значением справа. Оператор отношения, состоящий из операции и двух ее операндов, имеет значение 1, если выражение истинно, и значение 0, если выражение ложно. < меньше <= меньше или


IV. Логические операции

Из книги автора

IV. Логические операции Обычно логические операции "считают" условные выражения операндами. Операция ! имеет один операнд, расположенный справа. Остальные операции имеют два операнда: один слева и один справа. && Логическое И: результат операции имеет значение "истина",


V. Операции над указателями

Из книги автора

V. Операции над указателями & Операция получения адреса: выдаст адрес переменной, имя которой стоит за обозначением операции: &nurse является адресом переменной nurse * Косвенная адресация: выдает значение, записанное по адресу, на который ссылается указатель: nurse = 22;ptr =


VII. Дополнительные операции

Из книги автора

VII. Дополнительные операции sizeof Выдает размер (в байтах) операнда, стоящего справа. Операндом может быть обозначение типа, заключенное в скобки, как, например, в sizeof(float), либо имя конкретной переменной или определенного массива и т. д., как, например, в sizeof foo. (type) Операция


Операции

Из книги автора

Операции В языке Си предусматриваются поразрядные логические операции и операции сдвига. Далее мы будем записывать значения в двоичном коде, чтобы вы могли видеть, как выполняются операции. В реальных программах используются целые переменные или константы, записанные в


Операции

Из книги автора

Операции Теперь рассмотрим, что можно и нельзя делать с величинами типа enum. Вы можете присвоить константу типа enum переменной того же типа enum feline pet;pet = tiger;Нельзя использовать другие операции присваивания: pet += cat; /* недопустимо */Можно провести сравнение с целью выявления


Операции

Из книги автора

Операции Операции в языке Си имеют либо один операнд (унарные операции), либо два операнда (бинарные операции), либо три (тернарная операция). Операция присваивания может быть как унарной, так и бинарной (см. раздел 4.4).Существенным свойством любой операции является ее


Поразрядные операции

Из книги автора

Поразрядные операции Поразрядные операции выполняют над разрядами своих операндов логические функции И (&), включающее ИЛИ (|) и исключающее ИЛИ (^). Операнды поразрядных операций должны иметь целый тип, но бит знака, если он есть, также участвует в операции. Над


Логические операции

Из книги автора

Логические операции Логические операции выполняют над своими операндами логические функции И (&&) и ИЛИ (||). Операнды логических операций могут иметь целый, плавающий тип, либо быть указателями. Типы первого и второго операндов могут различаться. Сначала всегда


Операции присваивания

Из книги автора

Операции присваивания В языке Си имеются следующие операции присваивания: Операция Действие ++ Унарный инкремент -- Унарный декремент = Простое присваивание *= Умножение с присваиванием /= Деление с присваиванием %= Остаток от деления с присваиванием += Сложение с


Операции is и as

Из книги автора

Операции is и as Операция is предназначена для проверки того, имеет ли классовая переменная указанный динамический тип. Операция as позволяет безопасно преобразовать переменную одного классового типа к другому классовому типу (в отличие от явного приведения классового