D
delhpi
Unregistered / Unconfirmed
GUEST, unregistred user!
Object Pascal提供了两个运算符a s和i s,用它们通过RT T I 能对对象进行比较和强制类型转换。
关键字as 是类型转换的一种新的形式。它能把一个基层的对象强制类型转换成它的派生类,如果转换不合法就产生一个异常。假定有一个过程,想让它能够传递任何类型的对象,它应该这样定义:
procedure Foo(AnObject:TObject);
在这个过程如果要对A n O b j e c t进行操作,要把它转换为一个派生对象。假定把A n O b j e c t看成是一个T E d i t派生类型,并想要改变它所包含的文本( T E d i t是一个Delphi VCL编辑控件),用下列代码:
(Foo As TEdit).text:='holle World';
能用比较运算符来判断两个对象是否是相兼容的类型,用is 运算符把一个未知的对象和一个已知类型或实例进行比较,确定这个未知对象的属性和行为。例如,在对A n O b j e c t进行强制类型转换前,
确定A n O b j e c t和T E d i t是否指针兼容:
if (Foo Is TEdit) then
TEdit(Foo).text:='Hello,World.';
注意在这个例子中不能用a s进行强制类型转换,这是因为它要大量使用RT T I ,另外还因为,在第一行已经判断F o o就是T E d i t,可以通过在第2行进行指针转换来优化。
==========
注意在这个例子中不能用a s进行强制类型转换,这是因为它要大量使用RT T I
==========
这是因为它要大量使用RT T I ,是什么意思?是不是这样 代码运行时,效率比较低?
==========
假定把A n O b j e c t看成是一个T E d i t派生类型,并想要改变它所包含的文本( T E d i t是一个Delphi VCL编辑控件),用下列代码:
(Foo As TEdit).text:='holle World';
===========
这段话是否有误?我理解是
(AnObject As TEdit).text:='holle World';
富翁名称: delhpi
专 家 分: 6
可用积分: 15
给10分
关键字as 是类型转换的一种新的形式。它能把一个基层的对象强制类型转换成它的派生类,如果转换不合法就产生一个异常。假定有一个过程,想让它能够传递任何类型的对象,它应该这样定义:
procedure Foo(AnObject:TObject);
在这个过程如果要对A n O b j e c t进行操作,要把它转换为一个派生对象。假定把A n O b j e c t看成是一个T E d i t派生类型,并想要改变它所包含的文本( T E d i t是一个Delphi VCL编辑控件),用下列代码:
(Foo As TEdit).text:='holle World';
能用比较运算符来判断两个对象是否是相兼容的类型,用is 运算符把一个未知的对象和一个已知类型或实例进行比较,确定这个未知对象的属性和行为。例如,在对A n O b j e c t进行强制类型转换前,
确定A n O b j e c t和T E d i t是否指针兼容:
if (Foo Is TEdit) then
TEdit(Foo).text:='Hello,World.';
注意在这个例子中不能用a s进行强制类型转换,这是因为它要大量使用RT T I ,另外还因为,在第一行已经判断F o o就是T E d i t,可以通过在第2行进行指针转换来优化。
==========
注意在这个例子中不能用a s进行强制类型转换,这是因为它要大量使用RT T I
==========
这是因为它要大量使用RT T I ,是什么意思?是不是这样 代码运行时,效率比较低?
==========
假定把A n O b j e c t看成是一个T E d i t派生类型,并想要改变它所包含的文本( T E d i t是一个Delphi VCL编辑控件),用下列代码:
(Foo As TEdit).text:='holle World';
===========
这段话是否有误?我理解是
(AnObject As TEdit).text:='holle World';
富翁名称: delhpi
专 家 分: 6
可用积分: 15
给10分