Are 2 and 3 boxing/unboxing examples?
1) The documentation example:
int i = 123;
object iBoxed = i;
i = (int) iBoxed;
2: Is the boxing/unboxing as well?
int i = 123;
object iBoxed = i;
i = Int32.Parse(iBoxed.ToString());
3: Is the boxing/unboxing as well?
int i = 123;
object iBoxed = i;
i = Convert.ToInt32(iBoxed);
I assume that in all examples technically happens the same.
So I guess 2 und 3 are examples for boxing/unboxing?
In all three examples:
iBoxed
is a boxed copy of i
.
In example 2:
There is no unboxing involved here, as ToString
is a virtual method that will finally resolve to int.ToString
, which will then be parsed by int.Parse
, returning a non-boxed int
on the stack.
In example 3:
iBoxed
will get unboxed in the body of the method Convert.ToInt32
and returned as a non-boxed integer, on the stack again.
The second example is boxing but not unboxing. The int.parse won't compile because it expects a string and iBoxed is an object. I think you are mixing the concepts of boxing and conversion. Boxing is really about taking a value type ie POD as they say in C and treating it as reference unboxing is the ability to extract that same value type out of its container.
Ex 2. Fixed
int i = 123; // Assigment
object iBoxed = i ; // This is boxing
i = int.parse(iBoxed.toString()); //This is unboxing but only for the twostring method the assignment is a value type copy.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With