首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex3类型转换

flex3类型转换
EN

Stack Overflow用户
提问于 2009-11-26 20:12:40
回答 4查看 3.2K关注 0票数 3

有人知道Flex3中两种类型转换方式的真正区别吗?

代码语言:javascript
复制
var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);

我更喜欢使用第二种方法,因为当类型转换失败时,它会抛出一个错误,而第一种方法只会返回null。但是还有其他的区别吗?也许使用第一种方法有什么好处?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-27 21:13:00

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

我确信这会导致意想不到的行为的情况很少见,但我总是因为这个原因而使用"as“。意思是如果我这么做了

代码语言:javascript
复制
int(str) 

我知道这是一种“尝试转换”的意思,而不是“我保证它是”的意思。

ref:从http://raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/那里得到了一些确认

票数 5
EN

Stack Overflow用户

发布于 2009-11-26 20:26:25

  • 如果强制转换失败,as方法将返回null
  • 如果强制转换失败,则()方法将抛出错误。

如果variable的值与MyObject不兼容,则myObject1将包含null,并且您将看到null指针错误(1009 :无法访问空对象引用的属性或方法)。稍后在程序中的某个位置,当您尝试访问它时。当你使用MyObject(variable)语法进行类型转换时,你会在同一行中得到一个类型强制错误(_1034 :类型强制失败:无法将_转换为__) --这比后来在某个地方得到一个1009并想知道哪里出了问题更有帮助。

票数 2
EN

Stack Overflow用户

发布于 2009-11-27 22:44:07

我想我在这个网站上读到过as()稍微快一点,但是我找不到这个问题了。

除了这个问题已经被问了很多次之外,你还会找到一个更深入的答案here

我最近在StackOverflow上搜索时发现了一个非常有用的[]标签,它只允许搜索带有指定标签的问题。所以你可以像[actionscript-3] as vs cast一样进行搜索。这里有更多的搜索技巧:https://stackoverflow.com/search

不;讽刺的是,我找不到关于性能的问题,也没有写出关于如何搜索的问题;)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1803339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档