为什么c = null
在以下代码中不起作用?
public class Sample{
public int c;
}
public class Program
{
public static void Main(string[] args)
{
Sample c = new Sample();
Console.WriteLine(c.c);
f(c);
Console.WriteLine(c.c);
g(c);
Console.WriteLine(c.c);
}
static void f(Sample c){
c.c = 2;
}
static void g(Sample c){
c = null;
}
}
输出为0,2和2,而我期望最后一次输出为空。
答案 0 :(得分:0)
因为复制了对Sample的引用,所以将null赋给复制的引用,并且原始引用不会更改。 如果你想改变原始参考,你应该通过参考传递它:
static void g(ref Sample c)
{
c = null;
}
...
g(ref c);