(C#) refとoutの違い・使い方

csharp-ref-out-differense

 

C#のプログラム触ってて、メソッドの引数部分に時々現れる、
refとoutと言うキーワードが気になったのでメモ

 

refの使い方

参照渡しをする時に使用する。
初期化した変数を渡す必要がある。

class Program
{
    static void Main(string[] args)
    {
        // 変数を初期化
        int n = 2;

        // 参照渡しでメソッドを呼ぶ
        overWrite(ref n);

        // 結果は「10」
        console.WriteLine(n);
    }

    static void overWrite(ref int val)
    {
         // 参照元の変数を書き換え
         val = 10;
    }
}

 

outの使い方

ref同様、参照渡しをする時に使うキーワード。
しかし、初期化した変数を渡す必要がない
ただし、メソッドの中で必ず値を代入しなければならない。

class Program
{
    static void Main(string[] args)
    {
        // 変数を宣言だけする
        int n;

        // 参照渡しでメソッドを呼ぶ
        overWrite(out n);

        // 結果は「10」
        console.WriteLine(n);
    }

    static void overWrite(out int val)
    {
         // 参照元の変数に値を代入(outを使用しているメソッドなので、必須)
         val = 10;
    }
}

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。