Flex数据类型转换

时间:2011-06-14 12:33:02

标签: flash flex actionscript-3 flex3 casting

关于flex中的类型转换我有一个非常简单的问题。

这两次转化有何不同。

1)var arrCol:ArrayCollection = new ArrayCollection(event.result.dataset.table);

2)var arrCol:ArrayCollection = event.result.dataset.table as ArrayCollection;

我已经看到第二次转换比第一次转换效果更好(次数更多)。

2 个答案:

答案 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,则会出现运行时异常。由于ArrayArrayCollection是不兼容的类型,因此无法将它们相互转换。

答案 1 :(得分:0)

event.result.dataset.table as ArrayCollection更易读,写得更快。但我记得有些情况,当对象以这种方式转换时,flex会抛出错误。