/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ namespace nsBox { using System; struct Point { public Point (int x, int y) { cx = x; cy = y; } public override string ToString () { return ("(" + cx + ", " + cy + ")"); } public int cx; public int cy; } public class BoxUnBox { static public void Main () { long LongVal = 9600; object o = LongVal; ShowObject (o); o = 4096; ShowObject (o); Point point = new Point (42, 96); ShowObject (point); clsBox test = new clsBox(); ShowObject (test); } static public void ShowObject (object o) { if (o is int) Console.WriteLine ("The object is an integer"); if (o is long) Console.WriteLine ("The object is a long"); else if (o is Point) Console.WriteLine ("The object is a Point structure"); else if (o is clsBox) Console.WriteLine ("The object is a clsBox class object"); Console.WriteLine ("The value of object is " + o + " "); } } class clsBox { public override string ToString() { return (""-- clsBox --""); } } }
Author: coder
Automatic boxing and unboxing to pass an undetermined data type to a function
/* C# Programming Tips & Techniques by Charles Wright, Kris Jamsa Publisher: Osborne/McGraw-Hill (December 28, 2001) ISBN: 0072193794 */ // Obj.cs - Demonstrates automatic boxing and unboxing to pass an // undetermined data type to a function. // Compile this program with the following command line: // C:>csc Obj.cs // namespace nsObject { using System; public class Obj { static public void Main () { double d = 3.14159; // Pass a double to Square () object o = Square (d); ShowSquare (o); // Pass an int to Square () o = Square (42); ShowSquare (o); // Pass a float to Square () o = Square (2.71828F); ShowSquare (o); } // Square () returns the boxed square of a value if the data type is // int or double. Otherwise, Square() returns a null reference static object Square (object o) { if (o is double) return ((double) o * (double) o); if (o is int) return ((int) o * (int) o); return (null); } static public void ShowSquare (object o) { if (Object.Equals (o, null)) Console.WriteLine ("The object is null"); else Console.WriteLine ("The square is " + o); } } }
Illustrates boxing and unboxing
/* 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); } }
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); } }