// Старый текст
Операция is предназначена для проверки того, имеет ли
классовая переменная указанный динамический тип.
Операция as позволяет безопасно преобразовать переменную
одного классового типа к другому классовому типу (в отличие от
явного приведения классового типа).
Если a1 - переменная
классового типа, а B - тип класса, то выражение a1 is
B
возвращает True если переменная a1 имеет динамический
тип, совпадающий с B или являющийся одним из его потомков, и False в противном случае. Например:
type
A = class
end;
B = class(A)
end;
var a1: A;
...
a1 := B.Create;
writeln(a1 is B); // True
Если a1 - переменная
классового типа, а B - тип класса, то выражение a1 as
B
возвращает объект класса B, a1 имеет динамический тип
B или производный от него и nil в противном
случае. Например:
Фактически последняя строка делает то же, что и следующий фрагмент кода:
var b1: B;
...
b1 := a1 as B;
if a1 is B then
b1 := B(a1)
else b1 := nil;