DÊVIDA COM CASTING

KELLY 09/07/2015 16:22:11
#448641
Boa tarde a todos!!

Estou com uma grande dúvida nos termos utilizados em conversão de tipos. O Boxing ele ocorre quando eu converto de um Tipo-Valor para um Tipo-Referência e Unboxing quando eu faço a conversão de um Tipo-Referência para um Tipo-Valor?

Sempre encontro essa dificuldade nesses termos Boxing e Unboxing.

Grata!

ALVAROVB2009 09/07/2015 17:03:33
#448642
Eu estava estudando esses dias isso rsrsrs, segue o meu exemplo

Más é isso mesmo que vc falou, aqui criei um objeto para guardar o valor e depois recuperei ele

// Boxing -> é quando um objeto guarda as informações de uma variável
// o object pode receber qqer tipo de informação de uma variavel
//exemplo, aqui o Objeto O esta recebendo a informação da variável A
int a = 10;
object o = (object)a;

//exibindo o tipo da variável O que foi guardada
Console.WriteLine(o.GetType().ToString());


E agora para retornar o valor
Cria uma oura variável
int b = (int)o;
ou
((int)o).ToString();

As duas formas recupera o valor do objeto, com a diferença que na segunda expressão não é criada uma variável somente para conseguir esse valor

//conceito de boxing e unboxing
//Serve para guarda valor dentro de um tipo genérico, qqer coisa pode ser guardada dentro de um objeto

Espero ter te ajudado
KELLY 09/07/2015 17:27:06
#448645
Oi Álvaro, seguindo o exemplo da primeira linha:
// Boxing -> é quando um objeto guarda as informações de uma variável
Um objeto não é tipo-referência e uma variável(tipo primitivo) Tipo-Valor? Nesse caso não seria Unboxing?
KERPLUNK 09/07/2015 19:19:03
#448647
Resposta escolhida
Boxing basicamente é a conversão(casting) de um tipo valor para um tipo objeto:

int xxx = 10;
object boxed = xxx;


Unboxing é o processo inverso, de objeto de volta para tipo valor, seja primitivo ou qualquer outro tipo, incluindo qualquer classe ou interface:

//boxing
int xxx = 10;
object boxed = xxx;

//unbox
int fora = (int)boxed;
ALVAROVB2009 09/07/2015 20:37:33
#448650
Kelly no meu exemplo esqueci de colocar onde se encaixava o unboxed, que seroa no retorno do valor que o objeto ganhou, más o nosso amigo Kerplunk colocou

No meu exemplo o unboxing iria aqui
E agora para retornar o valor
Cria uma oura variável
int b = (int)o;
ou
((int)o).ToString();
KELLY 10/07/2015 13:51:15
#448666
Obrigada a todos pela ajuda!!

Tópico encerrado , respostas não são mais permitidas