Pergunta

Alguém sabe a diferença real entre as duas formas de conversão de tipos no Flex 3?

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

Eu prefiro usar o segundo método, porque ele vai lançar um erro quando o tipo de conversão falhar, enquanto que o primeiro método só vai retornar nulo. Mas existem outras diferenças? Talvez nenhum vantagens de se utilizar o primeiro método?

Foi útil?

Solução

O segundo tipo de fundição tem um comportamento diferente para nível superior ( http: //livedocs.adobe .com / flex / 2 / langref / ) tipos, por exemplo, Array (obj) não estendido no caminho direto você descreve; ele cria uma nova matriz se possível a partir de obj, mesmo se obj é um Array.

Eu tenho certeza que as vezes isso iria causar um comportamento inesperado seria raro, mas eu sempre uso "como" por este motivo. Isso significa que se eu faço

int(str) 

Eu sei que é um elenco em "tentar converter" sentido da palavra não no "eu prometo que é" sentido.

ref: tem alguma confirmação sobre isso a partir da http : //raghuonflex.wordpress.com/2007/07/27/casting-vs-the-as-operator/

Outras dicas

  • O método as retornos null se conversão falhar.
  • O método () lances e erro se a conversão falhar.

Se o valor da variable não é compatível com MyObject, myObject1 conterá null e você será surpreendido por um erro de ponteiro null ( 1009:. Não pode acessar uma propriedade ou método de uma referência nula objeto ) em algum lugar no final do programa, quando você tentar acessá-lo. Onde, como se você está lançando usando a sintaxe MyObject(variable), você receberá um erro de coerção de tipo ( 1034: Tipo de coerção falhou: não pode converter _ a _ ) na mesma linha em si - o que é mais útil do que ficar um em algum lugar 1009 depois e perguntando o que deu errado.

Eu acho que eu li em algum lugar neste site que as é slighty mais rápido do que (), mas não consigo encontrar a pergunta novamente.

Além de que esta questão ter sido perguntado muitas vezes, você vai encontrar uma resposta mais aprofundada aqui .

Eu descobri recentemente o tag [] muito útil quando pesquisando na StackOverflow, que permite pesquisar apenas em questões marcadas com a tag especificada (s). Então, você poderia fazer uma pesquisa como [actionscript-3] como vs elenco . Há mais dicas de pesquisa aqui: https://stackoverflow.com/search

.

E não; a ironia no que eu não posso encontrar a pergunta sobre o desempenho e escrever sobre como procurar não é perdido em mim;)

Eu acho que retorna a classe base e não nulo quando o elenco falha e () lança um erro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top