Class operators are slightly different from the operators above in the sense that they can only be used in class expressions which return a class. There are only 2 class operators, as can be seen in table (9.8).
An expression containing the is operator results in a boolean type. The is operator can only be used with a class reference or a class instance. The usage of this operator is as follows:
Object is Class
|
This expression is completely equivalent to
Object.InheritsFrom(Class)
|
If Object is Nil, False will be returned.
The following are examples:
Var
A : TObject; B : TClass; begin if A is TComponent then ; If A is B then; end; |
The as operator performs a conditional typecast. It results in an expression that has the type of the class:
Object as Class
|
This is equivalent to the following statements:
If Object=Nil then
Result:=Nil else if Object is Class then Result:=Class(Object) else Raise Exception.Create(SErrInvalidTypeCast); |
Note that if the object is nil, the as operator does not generate an exception.
The following are some examples of the use of the as operator:
Var
C : TComponent; O : TObject; begin (C as TEdit).Text:=’Some text’; C:=O as TComponent; end; |