0

次のようなメソッド宣言があります。

public int myMethod(int x, out int y, out int z)
{
    int k;
    foreach(int i in someList)
    {
        if(anotherMethod(out k))
        {
            z = k;
        }
        else
        {
            z = 0;
        }
    }

    y = someValue;

    return anotherValue;
}

しかし、私はこのコンパイルエラーが発生します

制御が現在のメソッドを離れる前に、出力パラメーター 'z' を割り当てる必要があります

4

3 に答える 3

1

理由: 関数から戻る前に、出力パラメーターを初期化する必要があります。

if ブロック内でパラメーター z に値を割り当てているため、コンパイラーは初期化できるかどうかを識別できなかったため、以下のように if ブロックの前にパラメーター z を初期化します。

public int myMethod(int x, out int y, out int z)
{
    int k;
    z=0;
    foreach(int i in someList)
    {

        if(anotherMethod(out k))
        {
            z = k;
        }
        else
        {
            z = 0;
        }
    }

    y = someValue;

    return anotherValue;
}
于 2013-11-06T06:15:34.413 に答える