0

私はOOPが初めてです。誰かが私の疑問を明確にしてくれることを願っています。

次のようなメソッドを呼び出したい場合

int number = numberMethod();

メソッド定義はどうあるべきですか??

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

また

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

または両方の定義が同じですか??

4

3 に答える 3

4

いいえ、それらは同じではありません。最初の形式ではなく、2 番目の形式を使用する必要があります。

メソッドの戻り値を使用しようとする場合 - これはここで行っていることです:

int number = numberMethod();

その場合、メソッドには適切な戻り値の型 (暗黙的に に変換できる型) が必要intです。そのようなメソッドを呼び出すことはできず、C# は "パラメーターと戻り値の型を持つメソッド" を "パラメーターの型と一致する戻り値の型を持つメソッド" としてvoid暗黙的に扱いません。outvoidout

戻り値の型を持つメソッドにパラメーターを含めることは、非常にまれです。(実際、パラメータをまったく使用するのが良い考えであることは比較的めったにありません.IMO.通常、それらは単一のメソッドがやりすぎていることを示しています.)outvoidout

于 2013-02-21T13:32:26.930 に答える
3

二つ目、

以下のようにメソッドを呼び出しているため、値を返すメソッドを呼び出していることを意味します

int number = numberMethod();

方法

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

最初のものを使用したい場合は、次のように呼び出す必要があります

int number ;
numberMethod(out number);

void の戻り値を持ち、param で out を指定しているため

方法

public void numberMethod(out int num)
{
    num = 3;
}
于 2013-02-21T13:32:00.277 に答える
2

いいえ、それらは同じ方法ではありません。メッセージの署名から非常に明確です。

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

必要に応じて使用する正しい方法です。

2番目の方法

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

于 2013-02-21T13:32:41.803 に答える