参照渡し

C++でおなじみの参照渡しはC#でも使用可能です。

参照渡しを利用すれば、配列やクラスのアドレスを渡すことで配列やクラスの値を変更できるようになります。

ここでは参照渡しのやり方を紹介します。

例えば、以下のようにプログラムを組むと

class sample
{
    static void test(int a)
    {
        a = 1;
    }

    public static void Main()
    {
        int x = 0;
        test(x);
        Console.WriteLine(x);
    }    
}

結果は「0」が表示されます。ここではただ値を渡しただけなので、とくにへんかはありません。

そこで以下のように

class sample
{
    static void test(ref int a)
    {
        a = 1;
    }

    public static void Main()
    {
        int x = 0;
        test(ref x);
        Console.WriteLine(x);
    }    
}

アドレスをrefにより渡すことで「1」が表示されます。これが参照渡しです。

上手に使い分けてみてください。

 

refの場合はrefで指定した変数に値が入っている必要があります。refはrefference「参照」なので当たり前ですね。

もしも、refの中身が空で出力用として使用したい場合はoutを使用します。たとえば、以下のように使用します。

using System;

class sample
{
    static void test(out int a)
    {
        a = 1;
    }

    public static void Main()
    {
        int x;
        test(out x);
        Console.WriteLine(x);
    }    
}

この場合、1が表示されます。xに値がなくても実行できます。

著者:安井 真人(やすい まさと)