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
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
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.