as 到底干什么?
TMyClass实现了IMyInterface接口,
MyClass: TMyClass;
MyIntf: IMyInterface;
MyIntf := MyClass as IMyInterface;
此命令使用一次正常,以后再用则出错,AS做了些什么呢?
MyIntf := MyClass;
则可以重复使用,这是为什么?
再就是,AS和强制转换有什么不同?仅仅是可以在编译时给提示吗?
--------------------------------------------------------------------
接着往下看,如果我先用 MyIntf := MyClass; 给 MyIntf 赋值,则重复使用
MyIntf := MyClass as IMyInterface;
就没问题了,这又是为什么?
--------------------------------------------------------------------
再往下看,我想把引用的地址显示出来,若用
MyIntf := MyObj as IMyInterface;
edt.Text := IntToStr(Integer(MyIntf));
则可以正常运行一次,而用下面(想省点事)就不行:
edt.Text := IntToStr(Integer(MyObj as IMyInterface));
这又又是为什么?
百思不得其解,请指教!