Boxing tipos anuláveis (C# Guia de programação)
Objetos com base em tipos anuláveis são in a box somente se o objeto não for nulo.Se HasValue é false, a referência de objeto é atribuída a null em vez de boxe.Por exemplo:
bool? b = null;
object o = b;
// Now o is null.
Se o objeto não for nulo – se HasValue é true – então boxing ocorre, mas somente o tipo subjacente que o objeto anulável se baseia for in a box.Boxing um tipo de valor nulo de não-nulos caixas o tipo de valor em si, não o System.Nullable<T> que envolve o tipo de valor.Por exemplo:
bool? b = false;
int? i = 44;
object bBoxed = b; // bBoxed contains a boxed bool.
object iBoxed = i; // iBoxed contains a boxed int.
Os dois objetos in a box são idênticos aos criados por tipos de conversão boxing não anuláveis.E, assim como os tipos de processador in a box não anuláveis, eles podem ser desemoldurados para tipos anuláveis, como no exemplo a seguir:
bool? b2 = (bool?)bBoxed;
int? i2 = (int?)iBoxed;
Comentários
O comportamento dos tipos anuláveis quando o processador in a box oferece duas vantagens:
Objetos anuláveis e sua contraparte in a box podem ser testados para null:
bool? b = null; object boxedB = b; if (b == null) { // True. } if (boxedB == null) { // Also true. }
Processador in a box tipos anuláveis totalmente suportam a funcionalidade do tipo subjacente:
double? d = 44.4; object iBoxed = d; // Access IConvertible interface implemented by double. IConvertible ic = (IConvertible)iBoxed; int i = ic.ToInt32(null); string str = ic.ToString();
Consulte também
Tarefas
Como: identificar um tipo anulável (guia de programação do C#)
Referência
Tipos anuláveis (guia de programação do C#)