flex3タイプの鋳造
-
05-07-2019 - |
質問
Flex 3での型キャストの2つの方法の本当の違いを知っている人はいますか?
var myObject1:MyObject = variable as MyObject;
var myObject2:MyObject = MyObject(variable);
2番目のメソッドは、型キャストが失敗したときにエラーをスローしますが、最初のメソッドはnullを返すだけなので、使用することを好みます。しかし、他に違いはありますか?おそらく、最初の方法を使用する利点はありますか?
解決
2番目のタイプのキャストは、トップレベルに対して異なる動作をします( http://livedocs.adobe .com / flex / 2 / langref / )タイプ、例Array(obj)は、あなたが説明するような単純な方法ではキャストしません。 objが配列であっても、可能であればobjから新しい配列を作成します。
これにより予期しない動作が発生することはまれですが、常に「as」を使用します。このために。
int(str)
「変換の試み」のキャストであることは知っています。 「私は約束します」にない言葉の意味センス。
ref: httpからこれに関する確認を得ました://raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/
他のヒント
- キャストが失敗した場合、
as
メソッドはnull
を返します。 - キャストが失敗すると、
()
メソッドがスローしてエラーになります。
variable
の値が MyObject
と互換性がない場合、 myObject1
には null
が含まれ、 null
ポインターエラー( 1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。)に驚いたのは、プログラムのどこかでアクセスしようとしたときです。 MyObject(variable)
構文を使用してキャストしているように、型強制エラー( 1034:型強制が失敗しました:_を_ に変換できません)が表示されます同じ行自体-後でどこかで1009を取得し、何がうまくいかなかったのかを考えるよりも便利です。
このサイトのどこかで as
は()
よりもやや速いと思いますが、質問はもう見つかりません。
この質問が何度も尋ねられていることに加えて、より詳細な回答がありますこちら。
最近、StackOverflowで検索するときに非常に便利な []
タグを発見しました。指定したタグでタグ付けされた質問のみを検索できます。したがって、 [actionscript-3] as vs cast のような検索を実行できます。 。ここにさらに検索のヒントがあります: https://stackoverflow.com/search 。
いいえ。皮肉なことに、パフォーマンスに関する質問を見つけることができず、検索方法について書くことができません;)
キャストが失敗して()がエラーをスローすると、nullではなく基本クラスが返されると思います。