-3

割り当てられていない out パラメータ 'q' と 'g' の使用でエラーが発生しました。間違っているところを修正してください。前もって感謝します。

using System;  
using System.Collections.Generic;
using System.Linq;
using System.Text;  
using System.Threading.Tasks;   

class Program  
{  
    static void Main(string[] args)  
    {  
        int p = 23;  
        int f = 24;  
        Fun(out p, out f);  
        Console.WriteLine("{0} {1}", p, f);  

    }  
    static void Fun(out int q, out int g)  
    {  
        q = q+1;  
        g = g+1;  
    }  
}  
4

1 に答える 1

9

あなたが間違っていることは、コンパイラあなたが間違っていると言っていることとまったく同じです-確実に割り当てられる前にパラメーターから読み取ろうとしています。outあなたのコードを見てください:

static void Fun(out int q, out int g)  
{  
    q = q + 1;  
    g = g + 1;  
}  

いずれの場合も、代入式の右側は out パラメータを使用していますが、その out パラメータにはまだ値が与えられていません。outパラメーターは最初は確実に割り当てられておらず、メソッドが戻る前に確実に割り当てられる必要があります (例外経由以外)。

両方のパラメーターをインクリメントすることが目的の場合は、ref代わりに使用する必要があります。

static void Fun(ref int q, ref int g)  
{  
    q = q + 1;  
    g = g + 1;  
}  

またはもっと簡単に:

static void Fun(ref int q, ref int g)  
{  
    q++;
    g++;
}  

呼び出しコードを次のように変更する必要があります。

Fun(ref p, ref f);
于 2014-10-31T18:10:31.750 に答える