is and Box UnBox


   
 
/*
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 --"");
        }
    }       
}

           
         
     


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 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); 
  } 
}