簡體   English   中英

flex3型鑄造

[英]flex3 type casting

有誰知道Flex 3中兩種類型轉換方式之間的真正區別?

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

我更喜歡使用第二種方法,因為它會在類型轉換失敗時拋出Error,而第一種方法只返回n​​ull。 但是還有其他差異嗎? 使用第一種方法可能有什么好處?

第二種類型的轉換對於頂級( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM