我是OOP的新手。希望有人澄清我的怀疑。
如果我想调用类似
的方法int number = numberMethod();
方法定义应该是什么?
public void numberMethod(out int num)
{
num = 3;
}
或
public int numberMethod()
{
int num = 3;
return num;
}
或两者定义相同??
答案 0 :(得分:4)
如果您尝试使用方法的返回值 - 这是您在此处所做的:
int number = numberMethod();
然后该方法必须具有适当的返回类型 - 可以隐式转换为int
的类型。您无法像这样调用void
方法,并且C#不会隐式将“带out
参数的方法和void
返回类型”视为“返回类型与{匹配的方法” {1}}参数类型“。
非常非常很少在包含out
返回类型的方法中包含out
参数。 (事实上,IMO完全使用void
参数是一个不错的主意。它们通常表明单个方法试图做太多。)
答案 1 :(得分:3)
第二个,
因为您正在调用以下方法,这意味着您正在调用返回值的方法
int number = numberMethod();
方法
public int numberMethod()
{
int num = 3;
return num;
}
如果您想先使用第一个用户,则需要将其称为
int number ;
numberMethod(out number);
因为你有无效的返回值并在param中指定
方法
public void numberMethod(out int num)
{
num = 3;
}
答案 2 :(得分:2)
不,它们不是同一种方法,它从消息的签名中非常清楚,
public int numberMethod() // return as integer
{
int num = 3;
return num;
}
是用于满足您需求的正确方法。
第二种方法
public void numberMethod(out int num)
{
num = 3;
}
也可以使用 You need to change the way it is invoked
可以像
一样使用int num;
numberMethod(out num);
该方法将结束具有相同效果,即num
将具有值3
。
out
参数仅在您需要从method/function
获得多个返回值时首选。