没有人知道真正的区别之间两种类型的铸造Flex中的3?

var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);

我更喜欢使用第二种方法,因为它会引发错误的时候类型铸失败,而第一种方法只会返回null。但是否有任何其他的差异?也许有任何优势,使用第一种方法?

有帮助吗?

解决方案

第二种类型的铸造有不同的行为顶级(http://livedocs.adobe.com/flex/2/langref/)的类型,例如Array(obj)不放在直接的方式你的描述;它创造了一个新阵列如果能够从obj,即使obj是一个阵列。

我相信时代,这将导致意外的行为将会是罕见的,但我总是使用"因为"对于这个原因。这意味着,如果我这样做

int(str) 

我知道这是一个铸在"试图转换"这个词的意义不在"我保证这是"的意义。

ref:有些确认在这 http://raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/

其他提示

  • as 方法返回 null 如果投失败。
  • () 方法引发的和错误,如果投失败。

如果价值 variable 不兼容 MyObject, myObject1 将包含 null 你会惊讶一个 null 指针的错误(1009:无法访问属性或方法的一个空对象参考。)地方在后来的程序,当你尝试访问。在那里如果你铸造用 MyObject(variable) 语法,你会得到一种类型的胁迫的错误(1034:类型的强迫失败:无法转换_以_)在同一线本身-这是更有助于获得一个1009的地方后却不知道这是做什么去了错误的。

我想我读过这个网站上, as 是略快于 (), 但是我不能找到问题了。

旁边的是这个问题已经问了许多时候,你会找到一个更深入的答案 在这里,.

我最近发现的很有用 [] 标签时搜索的计算器,它允许只搜索的问题,标记的规定标记(s)。所以你可以做一个搜索喜欢 [actionscript-3]如vs铸.有更多的搜索技巧在这里: https://stackoverflow.com/search.

并没有;具有讽刺意味的是,我不能找到有关问题的性能和编写有关如何检索没有失去对我)

我认为,返回基类和not null当铸造失败和()throws一个错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top