AS3 - В чем разница между MyClass (экземпляр) и (экземпляр как MyClass) - PullRequest
1 голос
/ 06 июля 2010

Вы можете повысить или уменьшить значение экземпляра (до суперкласса или подкласса), используя этот синтаксис:

var i:MyClass = MyClass(instance);

Но что делает ключевое слово as?они эквивалентны?или я что-то здесь упускаю ...

Ответы [ 3 ]

4 голосов
/ 06 июля 2010

В двух словах:

  • as является оператором. Состояния ссылки : "Если первый операнд является членом типа данных, результатом является первый операнд. В противном случае результатом является значение null"
  • последний пытается конвертировать. Для примитивов это в основном работает, для сложных значений - исключение, если значение не является членом требуемого типа.

предположим, у вас есть класс A и класс B.

var s:String = "4a";
trace(s as int);//null
trace(int(s));//4
var b:B = new B();
trace(b as A);//null
trace(A(b));//throws an error

Greetz
back2dos

2 голосов
/ 06 июля 2010

Эта статья хорошо объясняет это.

0 голосов
/ 06 июля 2010

Вы также можете прочитать о проблемах производительности, связанных с Casting Performance .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...