c# 装箱和拆箱

转载地址:

http://blog.csdn.net/Engkin/archive/2008/04/07/2258886.aspx

 

装箱和拆箱机制使得在C#类型系统中,任何值类型,引用类型和object类型之间进行转换,简单地说,有了装箱和拆箱的概念,对任何类型的值来说,最终我们都可以看作是object类型.  
  装箱转换是指将一个值类型隐式地转换成一个object类型,或者把这个值类型转换成一个被该值类型应用的接口类型,把一个值类型的值装箱,也就是创建一个object实例并将这个值复制给这个object.  
  拆箱和装箱正好相反,拆箱转换是指将一个对象类型显式转换成一个值类型,或是将一个接口类型显式转换成一个执行该接口的值类型.拆箱的过程分为两步,首先,检查这个对象实例,看它是否为给定的值类型的装箱值,然后,把这个实例的值拷贝给值类型的变量.

Demo

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication2
...{
    public partial class Form1 : Form
    ...{
        public Form1()
        ...{
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        ...{
            Checker c = new Checker();
            ClassA ca=new ClassA();
            Mystruct s = new Mystruct();
            IClassB ib =ca;  //封箱;
            object ob =s;  //封箱;从值类型转换到object类型
            Mystruct s1 =(Mystruct)ob;  //拆箱  从object类型转换到值类型
            c.Getcheck(s1);
        }
    }
    public class Checker
    ...{
        public Checker()
        ...{
 
        }
        public void Getcheck(object par)
        ...{
            if (par is ClassA)
            ...{
                MessageBox.Show("YES,ClassA");
            }
            else
            ...{
                MessageBox.Show("NO,ClassA");
            }
            if (par is IClassB)
            ...{
                MessageBox.Show("YES,IClassB");
            }
            else
            ...{
                MessageBox.Show("NO,IClassB");
            }
            if (par is Mystruct)
            ...{
                MessageBox.Show("YES,Mystruct");
            }
            else
            ...{
                MessageBox.Show("NO,Mystruct");
            }
        }
    }
    public class ClassA:IClassB
    ...{
       
    }
    public class ClassB:IClassB
    ...{

    }
    interface IClassB
    ...{

    }
    struct Mystruct
    ...{
 
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值