代码如下: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呢?请高手指教,我内存方面哪个地方分析错了?谢谢!
- 2 回答
- 0 关注
- 507 浏览
添加回答
举报
0/150
提交
取消