C#加框和消框
这一章的课程中,有时对象的方便性就象值类型一样好用。
这就是C#加框和消框登上了舞台的地方,加框和消框是C#类型系统的核心概念。通过允许一个值类型转换成类型对象或从类型对象转换成值类型,这种机制形成了值类型和引用类型之间的捆绑连接。任何东西终究是一个对象——但是,仅当需要它们是对象时。
1.加框转换
给一个值加框指隐式地把任何值类型转换成类型对象。当一个值类型被加框时,一个对象实例就被分配,且值类型的值被拷贝给新的对象。看以下例子:
- int nFunny = 2000;
- object oFunny = nFunny;
第二行的赋值暗示调用一个加框操作。nFunny整型变量的值被拷贝给oFunny对象。现在整型变量和对象变量都同时存在于栈中,但对象的值居留在堆中。那么,它暗示着什么呢?它们的值互相独立——在它们之间没有连接。(oFunny没有引用nFunny的值。) 以下代码说明了结果:
- int nFunny = 2000;
- object oFunny = nFunny;
- oFunny = 2001;
- Console.WriteLine("{0} {1}", nFunny, oFunny);
当代码改变oFunny的值时,nFunny的值并没有改变。只要你脑袋中有这个copy动作,就能够使用值类型的对象功能,发挥出你的巨大优势!
2.消框转换
和加框相比,消框是显式操作——必须告诉编译器,你想从对象中抽取出哪一种值类型。当执行消框操作时,C#检测所请求的值类型实际上存储在对象实例中。经过成功的校验,该值被消框。
这就是消框如何执行:
- int nFunny = 2000;
- object oFunny = nFunny;
- int nNotSoFunny = (int)oFunny;
以上介绍C#加框和消框
【编辑推荐】