flex3类型的铸造
-
05-07-2019 - |
题
没有人知道真正的区别之间两种类型的铸造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一个错误。