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