关于flex中的类型转换我有一个非常简单的问题。
这两次转化有何不同。
1)var arrCol:ArrayCollection = new ArrayCollection(event.result.dataset.table);
2)var arrCol:ArrayCollection = event.result.dataset.table as ArrayCollection;
我已经看到第二次转换比第一次转换效果更好(次数更多)。
答案 0 :(得分:5)
我认为“转换”一词并不正确。在您的代码片段中,存在实例化和强制转换。
案例1)正在实例化(创建新的类实例)。要确定它,请查看new
关键字。根据{{3}},参数为Array
个实例。
案例2)正在铸造。在您的情况下,event.result.dataset.table
应为ArrayCollection
。否则arrCol
的值将为null
。另一种铸造形式是:
var arrCol:ArrayCollection = ArrayCollection (event.result.dataset.table);
在这种情况下,如果event.result.dataset.table
不是ArrayCollection
,则会出现运行时异常。由于Array
和ArrayCollection
是不兼容的类型,因此无法将它们相互转换。
答案 1 :(得分:0)
event.result.dataset.table as ArrayCollection
更易读,写得更快。但我记得有些情况,当对象以这种方式转换时,flex会抛出错误。