码迷,mamicode.com
首页 > Windows程序 > 详细

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

时间:2015-10-12 14:31:10      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

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

例子:定义一个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             }

 

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

标签:

原文地址:http://www.cnblogs.com/SeekHit/p/4871389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!