Вопрос

Кто-нибудь знает реальную разницу между двумя способами приведения типов во Flex 3?

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

Я предпочитаю использовать второй метод, потому что он выдает ошибку при неудачном приведении типа, тогда как первый метод просто возвращает ноль.Но есть ли еще отличия?Возможно, есть какие-то преимущества в использовании первого метода?

Это было полезно?

Решение

Второй тип приведения имеет другое поведение для верхнего уровня ( http: //livedocs.adobe .com / flex / 2 / langref / ), например Array (obj) не является прямым способом, который вы описываете; по возможности он создает новый массив из obj, даже если obj является массивом.

Я уверен, что случаи, когда это приведет к неожиданному поведению, будут редкими, но я всегда использую " как " по этой причине. Это значит, что если я сделаю

int(str) 

Я знаю, что это актерский состав в " попытке конвертировать " смысл слова не в "Я обещаю, что это" чувство.

ref: получил подтверждение от 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, он позволяет выполнять поиск только в вопросах, помеченных указанными тегами. Таким образом, вы можете выполнить поиск, например [actionscript-3], как против приведения , Дополнительные советы по поиску можно найти здесь: https://stackoverflow.com/search .

И нет; ирония в том, что я не могу найти вопрос о производительности и написать о том, как поиск не теряется на меня;)

Я думаю, что as возвращает базовый класс, а не null, когда приведение не удается и () выдает ошибку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top