VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > c#编程 >
  • c#教程之加框(boxing)和消框(unboxing)

三. 加框(boxing)和消框(unboxing)

(相关C#教程)

加框(boxing)和消框(unboxing)是C#语言类型系统提出的核心概念,加框是值类型转换为object(对象)类型,消框是object(对象)类型转换为值类型。有了加框和消框的概念,对任何类型的变量来说最终我们都可以看作是object类型。
1 加框操作
把一个值类型变量加框也就是创建一个object对象,并将这个值类型变量的值复制给这个object对象。例如:
int i=10;
object obj=i;//隐式加框操作,obj为创建的object对象的引用。
我们也可以用显式的方法来进行加框操作,例如:
int i =10;
object obj=object(i);//显式加框操作
值类型的值加框后,值类型变量的值不变,仅将这个值类型变量的值复制给这个object对象。我们看一下下面的程序:
using System
class Test
{ public static void Main()
{ int n=200;
object o=n;
o=201;//不能改变n
Console.WriteLine("{0},{1}",n,o);
}
}
输出结果为:200,201。这就证明了值类型变量n和object类对象o都独立存在着。
2. 消框操作
和加框操作正好相反,消框操作是指将一个对象类型显式地转换成一个值类型。消框的过程分为两步:首先检查这个object对象,看它是否为给定的值类型的加框值,如是,把这个对象的值拷贝给值类型的变量。我们举个例子来看看一个对象消框的过程:
int i=10;
object obj=i;
int j=(int)obj;//消框操作
可以看出消框过程正好是加框过程的逆过程,必须注意加框操作和消框操作必须遵循类型兼容的原则。
3. 加框和消框的使用
定义如下函数:
void Display(Object o)//注意,o为Object类型
{ int x=(int)o;//消框
System.Console.WriteLine("{0},{1}",x,o);
}
调用此函数:int y=20;Display(y);在此利用了加框概念,虚参被实参替换:Object o=y,也就是说,函数的参数是Object类型,可以将任意类型实参传递给函数。
 

相关教程