如何将Object设置为null

时间:2018-04-08 20:02:10

标签: c# oop

为什么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,而我期望最后一次输出为空。

1 个答案:

答案 0 :(得分:0)

因为复制了对Sample的引用,所以将null赋给复制的引用,并且原始引用不会更改。 如果你想改变原始参考,你应该通过参考传递它:

        static void g(ref Sample c)
        {
            c = null;
        }

...

        g(ref c);