使用下面的两种方式来进行类型转换(我这里只是指对类的实例进行类型转换)有什么区别!可以说的具体点吗????????!!!!方式一:Sender as TControl方式二:TControl(Sender)

解决方案 »

  1.   

    区别是方式一:Sender as TControl 这个转换如果出错发生异常信息,而方式二:TControl(Sender)就不会。
      

  2.   

    好象出错时都会报告异常,除非使用了try...except。
    俺以为:
    前者是二元运算表达式,as是一个运算符,目的是在相关的作用域中临时把Sender作为TControl类的实例来对待,否则访问不了需要访问的属性;
    后者是一元运算表达式,属于强制类型转换的范畴,目的与前者完全相同。
      

  3.   

    第一种安全一些第二种如果Sender不是TControl派生类,可能产生不可预知的错误
      

  4.   

    我看到D5开发指南上写着,第一中方法一般是将子类的对象向父类的方向进行转换,如果是想其他的方向转换,将在无法转换时抛出异常;而第二中方法则是直接对对象指针进行转换,前面加一个判断语句会比较保险。if Sender is TSomeClass then
      TSomeClass(Sender)..........谁可以从对象模型方面解释解释!