Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Boxing Unboxing

Alguem teria um exemplo da utilização do Boxing e Unboxing ? Na aula não ficou claro a utilização, acredito que com um exemplo pratico irá me ajudar bastante.

Obrigado

1 resposta
solução

oi Marcelo, tudo bem?

Imagine um programa com uma classe Automovel:

class Automovel
{
    public string Nome { get; set; }
    public decimal Preco { get; set; }
    public int Tanque { get; set; }
    public int Volume { get; set; }
    public string Marca { get; set; }
    public bool CambioAutomatico { get; set; }
    public int Marchas { get; set; }
}

esse programa lê dados de automóveis a partir de um arquivo:

Nome: Hyundai HB20
Preco: 44490.00
Tanque: 50
Volume: 300
Marca: Hyundai
CambioAutomatico: True
Marchas: 6

Agora imagine que os valores lidos desse arquivo sejam armazenado num dicionário, no qual a chave é uma string e o valor é um object:

var dicionario = new Dictionary<string, object>();

Agora imagine que você tenha que armazenar os valores lidos do arquivo na classe Automovel. Para isso, você vai ter que converter tipos de referência (object) para tipos de valor (int, bool, decimal):

Automovel auto = new Automovel
{
    auto.Nome = dicionario["Nome"].ToString(),
    auto.Preco = (decimal)dicionario["Preco"],
    auto.Tanque = (int)dicionario["Tanque"],
    auto.Volume = (int)dicionario["Volume"],
    auto.Marca = dicionario["Marca"].ToString(),
    auto.CambioAutomatico = (bool)dicionario["CambioAutomatico"],
    auto.Marchas = (int)dicionario["Marchas"]
}

Essa conversão de tipos de referência (object) para tipos de valor (int, bool, decimal) é chamada de unboxing.

Se você precisar fazer o caminho inverso, transportando os dados da classe Automovel para o dicionário string/object, você terá que fazer a operação inversa, que o boxing.