C#装箱和拆箱(值类型和引用类型之间的转换)

面向对象编程中,封箱指把非对象类型的数值或数据,包装成对象类型反之,拆箱指把对象类型拆成非对象的数值或数据。

例子:定义一个Circle 类

 1   class Circle
 2     {
 3         double radius;
 4         public Circle(double param)
 5         {
 6             radius = param;
 7         }
 8 
 9         public double Area()
10         {
11             return Math.PI * radius * radius;//圆的面积
12         }
13     }

 

 1     static void Main(string[] args)
 2         {
 3             Circle c = new Circle(5);
 4             Console.WriteLine(c.Area());
 5 
 6             int i = 10;
 7             Object o = i;//装箱操作,将整形变量i赋值给object类型 o
 8             Console.WriteLine(o.ToString());
 9             int j = (int)o;//拆箱操作,将Object类型变量o,拆箱赋给整形变量j;
10             Console.WriteLine(j);
11           }

 

 

安全的数据类型转换方法:

is运算符,判断变量是否为指定数据类型。

 1             o = c;
 2             if (o is int)
 3             {
 4                 int k = (int)o;
 5             }
 6             else if (o is Circle)
 7             {
 8                 Circle c2 = (Circle)o;
 9                 Console.WriteLine(c2.Area());
10             }

as运算符。as 运算符类似于强制转换操作。但是,如果无法进行转换,则 as 返回 null 

 1  int? k = o as int?; //int类型无法存储Null型;
 2             if (k != null)
 3             {
 4                 Console.WriteLine(k);//说明转换成功,打印k的值。
 5             }
 6             else
 7             {
 8                 Circle c2 = o as Circle;
 9                 if (c2 != null)
10                 {
11                     Console.WriteLine(c2.Area());
12                     Console.ReadKey();
13                 }
14             }

 

posted @ 2015-10-12 13:21  SeeKHit  阅读(909)  评论(0编辑  收藏  举报