定义和调用方法

时间:2013-02-21 13:30:16

标签: c#

我是OOP的新手。希望有人澄清我的怀疑。

如果我想调用类似

的方法
int number = numberMethod();

方法定义应该是什么?

public void numberMethod(out int num)
{
    num = 3;
}

public int numberMethod()
{
    int num = 3;
    return num;
}

或两者定义相同??

3 个答案:

答案 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获得多个返回值时首选。