如何使用ref?

时间:2014-03-19 18:24:20

标签: c# ref

我正在学习使用ref,但无法理解,为什么我会收到错误?

class A
{
    public void ret(ref int variable)
    {
        variable = 7;
    }

    static int Main()
    {
        int z = 5;
        ret(ref z); // Error: Need a reference on object
        Console.WriteLine(z); // it will be 7 as I understand
        return 0;
    }
}

4 个答案:

答案 0 :(得分:9)

问题不在于ref参数。 ret是一种实例方法,您无法在不引用该类型实例的情况下调用实例方法。

尝试制作ret静态:

public static void ret(ref int variable)
{
    variable = 7;
}

答案 1 :(得分:5)

您正确使用ref。该错误实际上是因为ret()实例方法,而Main()静态。使ret()也是静态的,这段代码将按照您的预期进行编译和工作。

答案 2 :(得分:3)

你的方法不是静态的。你需要像这样做静态:

public static void ret(ref int variable)
{
    variable = 7;
}

答案 3 :(得分:2)

由于ret是一种实例方法,因此如果不创建该类型的对象,则无法访问它。

尝试将方法ret设为static method,如public static void ret(ref int variable)