Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Sobre o "as"

Eu não entendi direito o "as". Tipo ele só serve para fazer comparação entre dois objetos instanciados. por exemplo : "&&" compara se duas ou mais condições são iguais para ser considerados verdadeiros ou falsos; || compara se uma das condições é verdadeiro para ser considerados verdadeiros; e quanto ao "as"?

3 respostas

Bom, você utiliza o 'as' quando quer informar para o programa que ele deve ler uma variavel como sendo do tipo especificado.

Vamos supor o seguinte:

Você tem um método 'meuMetodo()' que executa uma serie de tarefas e quer retornar 2 valores, de tipos diferentes, por exemplo uma String nome e um Int32 id, como sabemos, no C# não é possível fazer isso de forma natural, mas você pode retornar um array de objects assim;

Object[] retorno = new Object[2];

retorno[0]=nome; retorno[1]=id;

return retorno;

Porém ao fazer a chamada meuMetodo(); ele irá te retornar um object[2], como você sabe que na posição 0 sempre vai ser uma String e na posição 1 sempre vai ser um Int32 você pode fazer o seguinte:

Object[] resultadoMetodo = meuMetodo();

String resultadoNome = resultadoMetodo[0] as String;

Int32 resultadoId = resultadoMetodo[1] as Int32;

Essencialmente ele serve como um CAST, muito embora o CAST seja o mais recomendado quando se sabe quais os tipos das variaveis.

O as tem uma vantagem que é a de poder ser utilizado quando não se sabe qual o tipo certo da variável que virá. Nesse caso vamos supor que você tenha um Int32 e que você coloque ele num Object objeto e que você tenha criado uma Classe Pessoa (que modela essencialmente uma pessoa);

Int32 meuNum = 536;

Object objeto = meuNum;

Num cenário onde você faz:

1- Pessoa fulano = objeto as Pessoa;

2- Pessoa fulano = (Pessoa) objeto;

A linha 1 irá te retornar NULL em fulano e a linha 2 irá lançar uma exceção.

Espero ter esclarecido a dúvida.

Abraços!!

humm, então eu posso dizer que "as" tem o objetivo de verificar se a variável é null ou não com base em uma comparação. Ex:

Pessoa fulano = objeto as Pessoa;

O "as" esta verificando se os dois(objeto e Pessoa) são do mesmo tipo, caso não, envia "null" para variável "fulano" .. estou certo?

solução!

Exato!