De forma sucinta, com o boxing convertemos um valor de tipo de dado para um tipo object
de forma a termos uma referência e não mais um valor. Não há necessidade de utilizar
casting no boxing.
Sintaxe
object nome_objeto = valor; //primitivo, struct, enum
Exemplo 4
using System;
public class Program
{
public static void Main()
{
Object objeto = "uma string em C#";
Console.WriteLine(objeto);
}
}
Saída
um string em C#
O unboxing é o processo inverso do boxing onde temos o valor e não mais uma referência.
No unboxing precisamos utilizar casting.
Exemplo 5
using System;
public class Program
{
public static void Main()
{
Object objeto = "uma string em C#";
string str = (string)objeto;
Console.WriteLine(str);
}
}
Saída
um string em C#
Caso a operação de unboxing não possa ser realizada, um erro ou exceção InvalidCastExection será "lançada",]
como pode ser visto na saída do exemplo 6 abaixo:
Exemplo 6
using System;
public class Program
{
public static void Main()
{
Object objeto = "uma string em D Bemol";
int str = (int)objeto;
}
}
Saída
System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Int32'