public void testa()
{
Test a = new Test();
testb(a);
Console.Write(a.i);
Console.Read();
}
public void testb(Test a)
{
a.i = 20;
a = new Test();
}
} public class Test
{
public int i = 15;
}
在testb方法中将a重新实例化了。为什么输出的结果不是15而是20?而我在testb中用ref修饰参数的话输出结果却是15.
但a本身就是引用类型呀...求教...
{
Test a = new Test();
testb(a);
Console.Write(a.i);
Console.Read();
}
public void testb(Test a)
{
a.i = 20;
a = new Test();
}
} public class Test
{
public int i = 15;
}
在testb方法中将a重新实例化了。为什么输出的结果不是15而是20?而我在testb中用ref修饰参数的话输出结果却是15.
但a本身就是引用类型呀...求教...
public void testb(Test a)
{
a.i = 20;
a = new Test();
/*
* 你又重新创建了一个 Test 类的示例放在了 形参 a 中
* 所以从方法中出来之后 打印出的 a.i 就是 15 了
*/
}
a = new Test()所分配的内存生存期仅仅在方法内.跳出方法后a仍然指向未调用方法前的引用.