2017年6月30日金曜日

C# out キーワード

C# の out キーワードについての簡単なメモです。

out キーワードは、メソッドにオブジェクトを参照渡しすることができます。
下記例では、ModifyText メソッドでは、値のコピーが渡されます。このため ModifyText の呼び出し後に、ModifyText の呼び出し元のオブジェクト(text)そのものに変化はありません。

一方で、後続の ModifyTextOut では、引数に out キーワードを伴います。ModifyTextOut を呼び出す際にも、引数に out キーワードをつけます。out キーワードは参照渡しのため、呼び出し元で ModifyTextOut に渡される引数(out text)の、メモリのアドレスを渡しています。ModifyTextOut 内では text のアドレスを経由して、ModifyText の呼び出し元のオブジェクト(text)そのものの値を書き換えています。

class Program
{
    static void Main(string[] args)
    {
        string text = "abc";
        ModifyText(text);
        Console.WriteLine("ModifyText の後:" + text);
        ModifyTextOut(out text);
        Console.WriteLine("ModifyTextOut の後:" + text);
        Console.ReadLine();
    }

    private static void ModifyText(string param)
    {
        param = "xxx";
    }

    private static void ModifyTextOut(out string param)
    {
        param = "zzz";
    }
}

実行結果です。
C# out キーワード

0 件のコメント:

コメントを投稿