/*
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);
}
}
}
Software Development
software development notes, main category for Cs, Java, and other programming experiences.
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);
}
}
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);
}
}