任何人都可以解释下面的代码的行为.下面代码的输出是字符串"str",i的值是100.
但为什么会这样呢?设置对象c1 = null后,为什么不为null?
public class Class1
{
public int i;
public Class1()
{
i = 10;
}
public string method1()
{
return "str";
}
}
public class Class2
{
public void method2(Class1 c1)
{
c1.i = 100;
c1 = null;
}
}
void main()
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
c2.method2(c1);
Response.Write(c1.method1());
Response.Write(c1.i.ToString());
}
Run Code Online (Sandbox Code Playgroud)
当您调用时,method2(Class1 c1)您将传递对象的引用副本,而不是对象本身(或对它的引用).设置时,c1 = null您将引用的副本设置为null,而不是对象.
您可以通过将方法签名更改为此来获得您期望的行为:
method2(ref Class1 c1)
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |