关于as的用法,对于各位大侠来说是送分题噢!(100分)

  • 主题发起人 主题发起人 编程菜菜鸟
  • 开始时间 开始时间

编程菜菜鸟

Unregistered / Unconfirmed
GUEST, unregistred user!
[8)]小弟一直不清楚as的用法,请各位大侠指点迷津,万万分感谢!
 
[blue]对不起,我还是不太明白。能否把例子写的详细些。谢谢[/blue]![?]
 
as 类似于强制转换,通常将父类转化位子类使用。

tcat=class(tobject)
end;

twhitecat=class(tcat)
procedure eat;
end;

然后
var
acat:tcat;

acat:=twhitecat.create;
要调用eat函数就要使用as
(acat as twhitecat).eat


 
(Send as TButton).caption:='aaaa';
意思是让Delphi把这个Send同TButton一样处理!
我也只会用,如果你叫我说,我还真说不出个什么所以然来!!

这样跟你说吧:
AS和IS是与Delphi类有关的两个操作符。
AS操作符是将一个类实例转换为另一个类型的类,如下面表达式:
Sender as Tbutton
其值是一个TButton类型的类实例,而其域以及虚函数的调用取决于Sender变量。
 
比如你在一个Form中找指到的某样控件,然后把它的一个属性更改了就可以用这个了。
下面例子比如你想更改Form下所有按钮的Enabled属性改为False

var
n:integer;
begin
for n:=0 to self.ComponentCount-1 do
begin
if self.Components[n] is TButton then //判断Components[n]是否是TButton的实例
(self.Components[n] as TButton).Enabled:=false;
end;
end;
 
Pan Ying说的已经很清楚了,AS就是用来将父类强制转化成子类,以便父类变量能用子类中的方法和属性等
看到snappy的例子了吗?那是个很经典,其实那个Sender就是TObject类型的,也就是TButton的父类,TObject
类是没有caption属性的,所以要强制转换成TButton了
 
多人接受答案了。
 
后退
顶部