c#经典入门学习笔记-封箱和拆箱

来源:互联网 发布:杰弗里-萨克斯 知乎 编辑:程序博客网 时间:2024/04/27 15:56

封箱和拆箱,这个概念在以前的编程语言的学习中,从未听到过,现在先说一下封箱的概念是把值类型转换为Object类型,或者转换为由值类型实现的接口类型。在这里有个值类型是个什么概念呢?我是这样理解的,所谓值类型就是指像int、string之类的简单类型,像集合、数组应该就不是值类型还应该归为对象类型。

下面看一个封箱的例子:

struct MyStruct{

    public int val;

}

MyStruct valType1=new MyStruct();

valType1.val=5;

object  valType=valType1;//这样就完成了封装

相当于把将MyStruct和valType1封装在一个盒子中。

拆箱即是将对象类型转换为值类型或为初始的接口类型。

例如:
MyStruct valType1=new MyStruct();
IMyInterface refType=valType();
MyStruct ValType2=(MyStruct)refType;
拆箱和封箱都是非常简单的操作,但具体该什么时候使用,该如何使用,我还不知道。不过书上有这么句话应该理解:封箱非常有用,有两个非常重要的原因。首先,它允许使用集合中的值类型,集合中项的类型是Object。其次,有一个内部机制允许在值类型上调用object,例如int和结构。

理论的内容,就是这些,你看明白了吗?期待下一节的内容。