装箱/拆箱和类型转换之间有什么区别?
这些术语似乎经常可以互换使用。
最佳答案
装箱是指将不可空值类型转换为引用类型或将值类型转换为其实现的某个接口(interface)(例如 int
到 IComparable<int>
)。此外,基础值类型到可为空类型的转换也是装箱转换。 (警告:此主题的大多数讨论都会忽略后两种类型的转换。)
例如,
int i = 5;
object o = i;
转换i
到 object
类型的实例.
拆箱是指从 object
实例的显式转换或ValueType
到不可为空值类型,即接口(interface)类型到不可为空值类型的转换(例如, IComparable<int>
到 int
)。此外,可空类型到基础类型的转换也是拆箱转换。 (警告:此主题的大多数讨论都会忽略后两种类型的转换。)
例如,
object o = (int)5;
int i = (int)o;
转换 o
中装箱的整数到 int
类型的实例。
类型转换是将表达式显式转换为给定类型。因此
(type) expression
显式转换expression
到 type
类型的对象.
关于.net - 装箱/拆箱和类型转换有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1085144/