有誰知道Flex 3中兩種類型鑄造方式之間的真正區別嗎?flex3類型鑄造
var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);
我更喜歡使用第二種方法,因爲當類型轉換失敗將拋出一個錯誤,而第一種方法只會返回null。但是還有其他的區別嗎?也許使用第一種方法有什麼好處?
有誰知道Flex 3中兩種類型鑄造方式之間的真正區別嗎?flex3類型鑄造
var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);
我更喜歡使用第二種方法,因爲當類型轉換失敗將拋出一個錯誤,而第一種方法只會返回null。但是還有其他的區別嗎?也許使用第一種方法有什麼好處?
第二種類型的鑄造對頂級(http://livedocs.adobe.com/flex/2/langref/)類型具有不同的行爲,例如,數組(obj)不會以您描述的直接方式進行轉換;它可以從obj創建一個新的數組,即使obj是一個數組。
我敢肯定,這會造成意想不到的行爲的時代將是罕見的,但我總是使用「爲」的原因。這意味着,如果我做
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
是略低的速度比()
在其他地方見過,但我不能再次找到的問題。
除此之外,這個問題已被詢問了很多次,你會發現一個更深入的答案here。
我最近在StackOverflow上搜索時發現了非常有用的[]
標籤,它只允許在標有指定標籤的問題上進行搜索。所以你可以做一個像[actionscript-3] as vs cast的搜索。這裏有更多的搜索提示:https://stackoverflow.com/search。
而且沒有;具有諷刺意味的是,我找不到關於性能的問題,並且寫下關於如何搜索的問題並不會在我身上丟失;)
我認爲當返回基類時不會返回null,並且()拋出一個錯誤。
你讀過其他答案嗎? –
因此''as數組和(')'其餘。 – Amarghosh
我總是使用「as」來鑄造。 –