1)首先定义一个结构
struct Person
{
public int Age;
}
{
public int Age;
}
2)然后将值类型装箱
static void Main ( string[] args )
{
Person p = new Person();
p.Age = 1;
// 将值类型装箱
object obj = p;
p.Age = 2;
Console.WriteLine( p.Age );
Console.WriteLine( ((Person)obj).Age );
}
{
Person p = new Person();
p.Age = 1;
// 将值类型装箱
object obj = p;
p.Age = 2;
Console.WriteLine( p.Age );
Console.WriteLine( ((Person)obj).Age );
}
最后结果输出:2和1
小结:
在将值类型装箱时,其实是得到了当前值类型的一个副本,而不是引用(通常类之间传递的都是引用),说得简单一些就是将该值类型的信息复制到obj中,复制完后,obj将不再依赖于原先的Person p,所以对p.Age重新赋值,也不会再影响到obj。
如果这里不是struct Person而是class Person的话,那么最后输出的结果则都为2,因为赋给obj的是变量p的引用。
同样的道理,如果对int等值类型的变量进行装箱,结果也和上面一样。