C#装箱和拆箱

C#装箱和拆箱机制使得在C#类型系统中,任何值类型,引用类型和object类型之间进行转换,简单地说,有了C#装箱和拆箱的概念,对任何类型的值来说,最终我们都可以看作是object类型.

创新互联建站长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为新沂企业提供专业的网站制作、网站建设,新沂网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

装箱转换是指将一个值类型隐式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型,把一个值类型的值装箱,也就是创建一个object实例并将这个值复制给这个object.

C#装箱和拆箱正好相反,拆箱转换是指将一个对象类型显式转换成一个值类型,或是将一个接口类型显式转换成一个执行该接口的值类型.拆箱的过程分为两步,首先,检查这个对象实例,看它是否为给定的值类型的装箱值,然后,把这个实例的值拷贝给值类型的变量.

 
 
 
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. namespace WindowsApplication2
  9. ...{
  10.     public partial class Form1 : Form
  11.     ...{
  12.         public Form1()
  13.         ...{
  14.             InitializeComponent();
  15.         }
  16.         private void Form1_Load(object sender, EventArgs e)
  17.         ...{
  18.             Checker c = new Checker();
  19.             ClassA ca=new ClassA();
  20.             Mystruct s = new Mystruct();
  21.             IClassB ib =ca;  //封箱;
  22.             object ob =s;  //封箱;从值类型转换到object类型
  23.             Mystruct s1 =(Mystruct)ob;  //拆箱  从object类型转换到值类型
  24.             c.Getcheck(s1);
  25.         }
  26.     }
  27.     public class Checker
  28.     ...{
  29.         public Checker()
  30.         ...{
  31.  
  32.         }
  33.         public void Getcheck(object par)
  34.         ...{
  35.             if (par is ClassA)
  36.             ...{
  37.                 MessageBox.Show("YES,ClassA");
  38.             }
  39.             else
  40.             ...{
  41.                 MessageBox.Show("NO,ClassA");
  42.             }
  43.             if (par is IClassB)
  44.             ...{
  45.                 MessageBox.Show("YES,IClassB");
  46.             }
  47.             else
  48.             ...{
  49.                 MessageBox.Show("NO,IClassB");
  50.             }
  51.             if (par is Mystruct)
  52.             ...{
  53.                 MessageBox.Show("YES,Mystruct");
  54.             }
  55.             else
  56.             ...{
  57.                 MessageBox.Show("NO,Mystruct");
  58.             }
  59.         }
  60.     }
  61.     public class ClassA:IClassB
  62.     ...{
  63.         
  64.     }
  65.     public class ClassB:IClassB
  66.     ...{
  67.     }
  68.     interface IClassB
  69.     ...{
  70.     }
  71.     struct Mystruct
  72.     ...{
  73.  
  74.     }
  75. }

C#装箱和拆箱内容就介绍到这里,希望对大家有所帮助。

标题名称:C#装箱和拆箱
网址分享:http://www.shufengxianlan.com/qtweb/news30/16430.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联