在C#中搜索装箱和取消装箱时,我发现了下面的代码片段。
class TestBoxing
{
static void Main()
{
int i = 123;
// Boxing copies the value of i into object o.
object o = i;
// Change the value of i.
i = 456;
// The change in i does not effect the value stored in o.
System.Console.WriteLine("The value-type value = {0}", i);
System.Console.WriteLine("The object-type value = {0}", o);
}
}
/* Output:
The value-type value = 456
The object-type value = 123
*/在这里,它说即使i的值改变了,o的值仍然是same.If,所以o引用的是值"123“,而不是i.Is ?如果o存储了i的值,那么当i的值被更改时,o的值也会发生变化。如果我错了,请纠正我。
发布于 2014-12-20 00:04:41
装箱是将值类型转换为类型对象或由此值类型实现的任何接口类型的过程。当CLR将值类型装箱时,它会将值包装在System.Object中,并将其存储在托管堆中。取消装箱从对象中提取值类型。装箱是隐式的;取消装箱是显式的。装箱和取消装箱的概念是类型系统的C#统一视图的基础,在这种视图中,任何类型的值都可以被视为对象。
int i = 123;
// The following line boxes i.
object o = i;

o = 123;
i = (int)o; // unboxing

请阅读MSDN全文。
发布于 2019-12-28 10:15:56
装箱:-例如,将值类型转换为引用类型的过程
int val = 10;
object Obj = val;取消装箱:-它与装箱完全相反,例如,将引用类型转换为值类型的过程。
int val2 = (int)Obj;https://stackoverflow.com/questions/27575610
复制相似问题