代码如下:
int i = 0;
Test(out i);
void Test(out j)
{
j = 4;
}
调用Test()方法时,变量i是不是会发生装箱操作呢,然后i和j同时指向相同的堆内存地址,是这样吗?参数用ref修饰时,也跟out一样会装箱吗?
在看看下面一个问题:
我首先自定义了一个Person类
public class Person
{
public int age;
public Person() { }
public Person(int age)
{
this.age = age;
}
}
public class Test
{
public static void Main()
{
Person p1 = new Person();
p1.age = 20;
Change(ref p1);
Console.Write(p1.age);
Console.ReadLine();
}
static void Change(ref Person p2)
{
p2 = new Person(30);
}
}
这段结果的输出结果为30,我有个疑问,在还未执行p2 = new Person(30)之前,我知道p1和p2同时指向一块堆内存,但当执行p2 = new Person(30)后,p2从新指向了新分配的内存,而p1还是指向原来的,如果按我这种思路的话,输出结果应该为20,怎么会是30呢?请高手指教,我内存方面哪个地方分析错了?谢谢!
九州编程
天涯尽头无女友