封箱和拆箱

来源:互联网 发布:淘宝下架排名靠前 编辑:程序博客网 时间:2024/04/27 20:15

装箱和拆箱机制使得在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
    
{
 
    }

}

 

原创粉丝点击