C#中的"装箱"(boxing)与"拆箱"(unboxing)
来源:互联网 发布:小米网络助手能删吗 编辑:程序博客网 时间:2024/05/16 10:20
/* 作者:耿奕廷 版权所有,转载时请注明出处及作者 */
我们知道在C#中,所有的类型都派生自类object,而派生类和继承类之间可以互相转换,这就有了“装箱”与“拆箱”的概念。
装箱:是指把某一类型的值显式或隐式的转换成object类型,或转成被此类型继承的接口。装箱后,这个object类的值在内存中heap区,是原类型的一个拷贝。如:
int i=2;
string str="Hello";
object objstr=str; //隐式
object objint=(object)i; //显式
有意思的是被装箱后可以用obj.ToString()来打印原值,如 Console.WriteLine(objstr.ToString())显示的是Hello。
拆箱:是指把装箱后的object类型显式转成原类型。这时可以用is运算符或GetType()来判断object的原类型。如
int n=(int)objint;
int s=(string)objstr;
if(objint is int) Console.WriteLine("Yeah!");
if(objstr.GetType().ToString()=="System.String") Console.WriteLine("OK");
拆箱注意:
1. 如拆箱后没有转成原类型,编译时不会出错,但运行会出错。所以拆箱后转换类 型 一定要正确。
2.用GetType().ToString()判断时一定要使用类型全称,如:System.String 而不要用String
0 0
- C#中的"装箱"(boxing)与"拆箱"(unboxing)
- C#中的"装箱"(boxing)与"拆箱"(unboxing)
- C#中的“装箱”(boxing)与“拆箱”(unboxing)
- C#中的装箱(boxing)拆箱(unboxing)
- C#中的装箱(boxing)拆箱(unboxing) (续)
- C#中的装箱(boxing)拆箱(unboxing)
- C#中的“装箱”(boxing)与“拆箱”(unboxing)
- C#中的“装箱”(boxing)与“拆箱”(unboxing)
- vc.net中的“装箱”(boxing)与“拆箱”(unboxing)
- C#中的装箱(Boxing)和拆箱(Unboxing)
- C#中的“装箱”(boxing)与“拆箱”(unboxing)_C#教程
- C#中的“装箱”(boxing)与“拆箱”(unboxing)_C#教程
- C#“装箱”(boxing)与“拆箱”(unboxing)
- 装箱(Boxing)拆箱(unboxing)
- C#学习日记18----装箱(boxing)转换与拆箱(unboxing)转换
- C#装箱(Boxing)和拆箱(Unboxing)
- C#装箱和拆箱(Boxing 和 UnBoxing)
- C#—装箱(boxing)与拆箱(unboxing)
- ZOJ 2588 Burning Bridges(无向连通图求割边)
- LeetCode 16 Single Number
- Add Two Numbers
- 字符串—基础知识
- Linux图书学习路线
- C#中的"装箱"(boxing)与"拆箱"(unboxing)
- Android系统开发(7)——标准I/O与文件锁
- 第十章 10.2.2节练习
- Python版的Hello World
- Solr开发文档:Solr详细介绍
- Codeforces Round #222 (Div. 1) C. Captains Mode
- 齐次坐标(Homogeneous Coordinate)的理解
- 程序启动原理
- AIX 计算今年过了多少天了