谁能解释下面代码的行为。以下代码的输出是字符串“str”,i 的值为 100。
但为什么会这样呢?设置object 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());
}
最佳答案
当您调用 method2(Class1 c1)
时,您传递的是对象引用的副本,而不是对象本身(或对象的引用)。当您设置 c1 = null
时,您将引用的副本设置为 null,而不是对象。
您可以通过将方法签名更改为此来获得您期望的行为:
方法 2(引用 Class1 c1)
关于c# - 对象行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4215078/