我是 OOP 的新手。希望有人澄清我的疑问。
如果我想调用类似的方法
int number = numberMethod();
方法定义应该是什么?
public void numberMethod(out int num)
{
num = 3;
}
或者
public int numberMethod()
{
int num = 3;
return num;
}
还是两个定义都一样??
我是 OOP 的新手。希望有人澄清我的疑问。
如果我想调用类似的方法
int number = numberMethod();
方法定义应该是什么?
public void numberMethod(out int num)
{
num = 3;
}
或者
public int numberMethod()
{
int num = 3;
return num;
}
还是两个定义都一样??
不,它们不一样。你必须使用第二种形式,而不是第一种。
如果您尝试使用该方法的返回值 - 这就是您在这里所做的:
int number = numberMethod();
那么该方法必须有一个适当的返回类型——一个可以隐式转换为int
. 您不能调用这样的void
方法,并且 C# 不会将“具有out
参数和void
返回类型的方法”隐式视为“具有与参数类型匹配的返回类型的方法out
”。
在具有返回类型的方法中包含参数很少是一个好主意。(事实上,使用参数相对来说很少是一个好主意,IMO。它们通常表明一个方法正在尝试做太多事情。)out
void
out
第二个,
因为您正在调用如下方法,这意味着您正在调用返回值的方法
int number = numberMethod();
方法
public int numberMethod()
{
int num = 3;
return num;
}
如果你想使用第一个而不是你需要调用它
int number ;
numberMethod(out number);
因为你有 void 返回值并在 param 中指定
方法
public void numberMethod(out int num)
{
num = 3;
}
不,它们不是同一种方法,从消息的签名中非常清楚,
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
具有 value 3
。
out
方法中的参数仅在需要从method/function
.