[英]flex3 type casting
有誰知道Flex 3中兩種類型轉換方式之間的真正區別?
var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);
我更喜歡使用第二種方法,因為它會在類型轉換失敗時拋出Error,而第一種方法只返回null。 但是還有其他差異嗎? 使用第一種方法可能有什么好處?
第二種類型的轉換對於頂級( http://livedocs.adobe.com/flex/2/langref/ )類型具有不同的行為,例如,Array(obj)不會以您描述的直接方式進行轉換; 如果可能的話,它會從obj創建一個新的數組,即使obj是一個數組。
我確信這會導致意外行為的時間很少,但我總是因此而使用“as”。 這意味着如果我這樣做
int(str)
我知道這是“嘗試轉換”這個詞的意義而不是“我保證是這樣”的意義。
參考:從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
是略低快於()
但我不能再次找到的問題。
除了已經多次詢問這個問題之外,你會在這里找到一個更深入的答案。
我最近在StackOverflow上搜索時發現了非常有用的[]
標簽,它只允許搜索用指定標簽標記的問題。 所以你可以像[castcript-3]一樣進行搜索。 這里有更多搜索提示: https : //stackoverflow.com/search 。
和不; 具有諷刺意味的是,我無法找到關於性能的問題,並寫下如何搜索不會丟失在我身上;)
我認為當返回基類時,並且當轉換失敗並且()拋出錯誤時不返回null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.