flex3型铸造

Mau*_*oer 4 apache-flex flex3 actionscript-3

有谁知道Flex 3中两种类型转换方式之间的真正区别?

var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用第二种方法,因为它会在类型转换失败时抛出Error,而第一种方法只返回n​​ull.但是还有其他差异吗?使用第一种方法可能有什么好处?

sus*_*han 5

第二种类型的转换对于顶级(http://livedocs.adobe.com/flex/2/langref/)类型具有不同的行为,例如,Array(obj)不会以您描述的直接方式进行转换; 如果可能的话,它会从obj创建一个新的数组,即使obj是一个数组.

我确定这会导致意外行为的时间很少见,但我总是因为这个原因使用"as".这意味着如果我这样做

int(str) 
Run Code Online (Sandbox Code Playgroud)

我知道这是"尝试转换"这个词的意义而不是"我保证是这样"的意义.

参考:从http://raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/获得了一些确认