ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

outとref

C言語で、関数での演算結果を受け取るとき、一つなら関数の戻り値を使い、二つ以上なら引数に変数のポインタを渡して受け取ることが多い。たとえば2つの値を受け取るときは次のような感じ。

void GetPos( int* x, int* y )
{
    *x = 123;
    *y = 456;
}

void Func()
{
    int x, y;
    GetPos( &x, &y );
}

C#の場合はポインタが使えないのでoutキーワードやrefキーワードを使って参照渡しを行う。
outを使うときにはメソッドの定義とそれを呼び出す側の両方にoutキーワードをつける。outを使った例は次の通り。

void GetPos( out int x, out int y )
{
    x = 123;
    y = 456;
}

void Func()
{
    int x;
    int y;
    GetPos( out x, out y );
}

outの場合は変数の初期化は必要ないが、refキーワードの場合は初期化してから渡さなければならない。