You can box regular value types or their equivalent nullable types (e.g. int and int?) and the boxed values will either be null or be of the underlying value type.
You can unbox these values to a nullable type, or use the as operator to do the unboxing. The example below shows the result of unboxing several different values to a nullable int (int?) using the as operator.
int? i1 = null; // Nullable<int> w/no value int? i2 = 42; // Nullable<int> with a value int i3 = 12; // Plain old int // Boxing nullable types object o1 = i1; object o2 = i2; object o3 = i3; object o4 = new Dog("I'm not an int", 12); // Unboxing to nullable types int? ia1 = o1 as int?; // null int? ia2 = o2 as int?; // 42 int? ia3 = o3 as int?; // 12 int? ia4 = o4 as int?; // null bool bHasVal = ia1.HasValue; // false bHasVal = ia2.HasValue; // true bHasVal = ia3.HasValue; // true bHasVal = ia4.HasValue; // false
Filed under: Data Types Tagged: as, as operator, C#, Data Types, Nullable
