C# 如何使用ref?

C# 如何使用ref?,c#,ref,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

我正在学习使用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;
    }
}

问题不在于
ref
参数。这是因为
ret
是一个实例方法,如果不引用该类型的实例,就不能调用实例方法

尝试使
ret
静态:

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

您的方法不是静态的。您需要将其设置为静态的,如下所示:

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

您正确地使用了
ref
。这个错误实际上是因为
ret()
是一个实例方法,而
Main()
是静态的。将
ret()
也设为静态,此代码将按预期编译和工作。

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

尝试将方法
ret
设置为
静态方法
类似
公共静态void ret(ref int变量)