We know that C# data types are divided into two types, value type and reference type
How does this square with the ability to call methods on an int, which is a value on the stack?
The way C# achieves this is through a bit of magic called boxing. Boxing and its counterpart unboxing, allow us to convert value types to reference types and then back to value types.
Boxing is the term used to describe the transformation of a value type to a reference type. Basically, the run-time creates a temporary reference-type box for the object on the heap.
This conversion can occur implicitly, but we can also perform it manually:
int x = 20; object obj = x;
Unboxing is the term used to describe the reverse process, where the value of a previously boxed value type is cast back to a value type. We use the term cast here, as this has to be done explicitly. The syntax is similar to explicit type conversions
int x = 100; object obj = x; // Box the int int y = (int)obj; // Unbox it back into an int
We can only unbox a variable that has previously been boxed (Implicitly or explicitly).
Warning. When unboxing, we have to be careful that the receiving value variable has enough room to store all the bytes in the value being unboxed. C#’s ints, for example, are only 32 bits long, so unboxing a long value (64 bits) into an int as shown below will result in an InvalidCastException:
long x = 333333423000; object p = (object)x; int y = (int)p;
Having 13+ years of experience in Microsoft Technologies (C#, ASP.Net, MVC and SQL Server). Worked with Metaoption LLC, for more than 9 years and still with the same company. Always ready to learn new technologies and tricks.
|By Ali Adravi On 27 Dec, 12 Viewed: 1,005|
Polymorphism is derived from two Latin words, 1. Poly means many 2. Marphose means forms. By using inheritance, a class can be used as many types, say we have a Person which may be a Professor, may be a Student, may be Clerk. So in this article we will see some example of Polymorphism. When we... By Hamden On 01 Jun 2013 Viewed: 3,877
Creating windows service in C# is really easy but when we need to create first time we face many problems so in this post we will try to learn everything about window service. In this article we will create a windows service which will run after a particular interval, and time should be... By Ali Adravi On 30 Apr 2013 Viewed: 8,042
C# the language, right from the very beginning is always supported covariance and contravariance but in most simple scenario, now in C# 4.0 we have full support of covariance and contravariance in all circumstances, generic interface and generic delegates, other C# types already support from first... By Ali Adravi On 29 Mar 2013 Viewed: 4,707
In C# there are different data type and they use some default value when we declare a variable. When we define a variable of type int or Int32 say int score; so what is the value of score, will it be null or zero, in the same way if we create a variable of type string/String what value it holds... By Ali Adravi On 27 Mar 2013 Viewed: 2,292
An enumeration type (also known an enumeration or an enum) provides an efficient way to define a set of named integral constants that may be assigned to a variable to make programming clear, understandable and manageable. There are ways of using, like how to use enum in switch and case statement,... By Hamden On 27 Mar 2013 Viewed: 3,824