繁体   English   中英

C#将类成员作为ref参数传递

[英]C# passing class member as ref parameter

我不明白为什么可以将类实例成员作为ref参数传递给函数。

函数执行时可以通过垃圾回收来移动对象,从而使引用无效。

然而,这似乎是允许的并且可行。 这是否意味着“ ref”参数不仅仅是在底层的本机指针?

class A
{
    public int Value;
}

class Test
{
    static void F(ref int value)
    {
        value = 7;
    }

    static void Main()
    {
        A obj = new A();
        // obj can be moved by GC, so "ref obj.Value" cannot be a native pointer under the hood
        F(ref obj.Value);  
        System.Console.WriteLine(obj.Value);  // Prints 7
    }
}

这是否意味着“ ref”参数不仅仅是在底层的本机指针?

是的,这就是它的意思。 如果它只是一个指针,他们会称其为指针而不是引用。 相反,对于引用,GC知道原始对象并正确跟踪了事物,因此引用与该对象一起存在,并且直到该方法退出后才收集该对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM