C# 装箱和拆箱
2018-01-16 03:53 更新
C# 装箱和拆箱
对象类型
object
或 System.Object
是所有类型的最终基类。
任何类型都可以upcast到对象。
以下代码创建一个类Stack以提供First-In-Last_Out数据结构。
public class Stack { int position; object[] data = new object[10]; public void Push (object obj) { data[position++] = obj; } public object Pop() { return data[--position]; } }
因为Stack使用对象类型,我们可以推送和弹出任何类型到和从堆栈。
Stack stack = new Stack(); stack.Push ("CSS"); string s = (string) stack.Pop(); // Downcast, so explicit cast is needed Console.WriteLine (s);
装箱和拆箱
在值类型和对象之间进行转换时,CLR必须执行装箱和取消装箱的过程。
装箱
装箱是将值类型实例转换为引用类型实例。
引用类型可以是对象类或接口。
int x = 1; object obj = x; // Box the int
拆箱
拆装箱会将操作转换为原始值类型,从而反转操作:
int y = (int)obj; // Unbox the int
拆箱需要显式强制转换。
例如,以下引发异常,因为long不完全匹配int:
object obj = 1; // 1 is inferred to be of type int long x = (long) obj; // InvalidCastException
以下代码执行取消装箱和强制转换:
object obj = 9; long x = (int) obj;
以上内容是否对您有帮助:
← C# 继承的成员
更多建议: