/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/
/*
Example7_8.cs illustrates boxing and unboxing
*/
using System;
public class Example7_8
{
public static void Main()
{
// implicit boxing of an int
int myInt1 = 10;
Console.WriteLine("myInt1.ToString() = " + myInt1.ToString());
Console.WriteLine("myInt1.GetType() = " + myInt1.GetType());
// explicit boxing of an int to an object
int myInt2 = 10;
object myObject = myInt2; // myInt2 is boxed
Console.WriteLine("myInt2 = " + myInt2);
Console.WriteLine("myObject = " + myObject);
// explicit unboxing of an object to an int
int myInt3 = (int) myObject; // myObject is unboxed
Console.WriteLine("myInt3 = " + myInt3);
}
}
Month: February 2011
Boxing makes it possible to call methods on a value
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Boxing makes it possible to call methods on a value!
using System;
public class MethOnValue {
public static void Main() {
Console.WriteLine(10.ToString());
}
}
Boxing also occurs when passing values
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// Boxing also occurs when passing values.
using System;
public class BoxingDemo11 {
public static void Main() {
int x;
x = 10;
Console.WriteLine("Here is x: " + x);
// x is automatically boxed when passed to sqr()
x = BoxingDemo11.sqr(x);
Console.WriteLine("Here is x squared: " + x);
}
static int sqr(object o) {
return (int)o * (int)o;
}
}
A simple boxing/unboxing example
/*
C#: The Complete Reference
by Herbert Schildt
Publisher: Osborne/McGraw-Hill (March 8, 2002)
ISBN: 0072134852
*/
// A simple boxing/unboxing example.
using System;
public class BoxingDemo {
public static void Main() {
int x;
object obj;
x = 10;
obj = x; // box x into an object
int y = (int)obj; // unbox obj into an int
Console.WriteLine(y);
}
}
explicit unboxing of an object to an int
using System;
class MainClass {
public static void Main() {
object myObject = 3;
int myInt3 = (int)myObject; // myObject is unboxed
Console.WriteLine("myInt3 = " + myInt3);
}
}
explicit boxing of an int to an object
using System;
class MainClass {
public static void Main() {
int myInt2 = 10;
object myObject = myInt2; // myInt2 is boxed
Console.WriteLine("myInt2 = " + myInt2);
Console.WriteLine("myObject = " + myObject);
}
}
implicit boxing of an int
using System;
class MainClass {
public static void Main() {
int myInt1 = 10;
Console.WriteLine("myInt1.ToString() = " + myInt1.ToString());
Console.WriteLine("myInt1.GetType() = " + myInt1.GetType());
}
}

