2011-06-14 86 views
0

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

这两次转换有什么区别。

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

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

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

回答

5

我认为术语“转换”不正确。在你的代码片段中存在实例化和投射。

情况1)正在实例化(创建类的新实例)。要确定它,请看new关键字。并且该参数是根据ArrayCollection's constructor documentationArray实例。

案例2)正在铸造。在你的情况下,event.result.dataset.table应该是ArrayCollection。否则,arrCol的值将是null。铸造的另一种形式是:

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

在这种情况下,如果event.result.dataset.table不是ArrayCollection会出现运行时异常。由于ArrayArrayCollection是不兼容的类型,不能将它们彼此投射。

0

event.result.dataset.table as ArrayCollection更具可读性,编写速度更快。但是我记得flex在这种方式转换时发生错误的情况。