none
Boxing e Unboxing RRS feed

Respostas

  • Vou tentar ser simples e breve.

    Existe dois tipos de dados em .Net, os dados "por valor" e os dados "por referência".

    Os dados por valor são aqueles simples, como double, int, bit, bool, decimal, e outros tipos de structs etc.

    Os dados por referências são o que chamamos de classes, dados como List, Form, Page, etc (a maioria das classes do .Net)

    Quando você converte um tipo por valor para um tipo por referência, você faz um boxing 

    por exemplo:

    int i = 1;

    object o = i //Coloquei a variavel por valor i dentro de uma variável por referência o

    o unboxing é o caminho inverso

    i = (int) o;

    os termos boxing e unboxing vem da representação da memória. Imagina que um objeto/classe, na realidade é uma referência a um endereço de memória, que contém os dado de fato, é como se fosse uma caixa (box) com os dados. Se você coloca o dado dentro de uma "caixa" de memória, vc faz um boxing, ao tirar esse dado da caixa você faz o unboxing.

    Uma variável simples (por valor) como o int, não tem uma referência para a memória que contem um valor, mas contem o próprio valor da memória, por isso é chamado de tipo de dado por valor, e não por referência (Isso eu sei que é confuso de entender sem desenhar, como geralmente é feito em aulas de estrutura de dados)

    Existem outras formas de explicar isso, mas espero que essa forma ajude.

    Abs,

    Fred

    http://www.fredericoemidio.com

    quarta-feira, 22 de julho de 2015 17:55