プログラミングでアイデアを具現化したい

あらゆるものを具現化するためにプログラミングを始めました。主にC#

値型の参照渡し


独習C# 第3版より


通常intなどの値型を引数に渡した場合、メソッド側には値だけが渡される為、
呼び出し元の実引数には影響がないが、refを使うことで値型を参照で渡す事が
可能になる為、メソッド側から呼び出し元の実引数を変更できるようになる。

    class Program {
        static void Main(string[] args) {
            RefTest ob = new RefTest();
            int a = 10;
            Console.WriteLine(a);
            ob.Sqr(a);
            Console.WriteLine(a);
            //値型aを参照で渡す
            ob.Sqr(ref a);
            Console.WriteLine(a);
        }
    }
    class RefTest {
        public void Sqr(int i) {
            i = i * i;
        }
        public void Sqr(ref int i) {
            i = i * i;
        }
    }

実行結果
f:id:tos5511:20160102143254j:plain

refを利用した値の入れ替えメソッド

    class Program {
        static void Main(string[] args) {
            SwapDemo ob = new SwapDemo();

            int x = 10, y = 20;
            Console.WriteLine("x:"+x+ "y:" + y);

            ob.Swap(ref x, ref y);
            Console.WriteLine("x:" + x + "y:" + y);
        }
    }

    class SwapDemo {
        public void Swap(ref int a, ref int b) {
            int temp;
            temp = a;
            a = b;
            b = temp;
        }
    }

実行結果
f:id:tos5511:20160102155427j:plain


※突っ込み所がある場合、ご指摘頂けたら幸いです。


直近の人気記事
tos5511.hatenablog.com