【c#】配列を戻り値に設定したとき《参照型》で返る検証

今回からたまに、プログラミング中に得た情報をここに残しとくぜ。

とはいえ。

主にだるさを極めし者てき備忘録なんで、必要ないひとは無視してね。


コード

using System;
using System.Collections.Generic;

//c#で、配列を戻り値に設定したとき《参照型》で返る検証
namespace testNameSpace{

    class testClass{

        public void testMethod(){

            testClass2 t2 = new testClass2();

            //short配列
            short[] shortArrayReceive = t2.getShortArray();

            Console.WriteLine("{0},{1},{2}",
                                shortArrayReceive[0],
                                shortArrayReceive[1],
                                shortArrayReceive[2]);  //受取り側の配列を表示

            shortArrayReceive[0] = 999; //受取り側の配列の要素を変更

            t2.viewShortArray();    //返す側の配列を表示

            //string配列
            string[] stringArrayReceive = t2.getStringArray();

            Console.WriteLine("{0},{1},{2}",
                                stringArrayReceive[0],
                                stringArrayReceive[1],
                                stringArrayReceive[2]);  //受取り側の配列を表示

            stringArrayReceive[0] = "んんん"; //受取り側の配列の要素を変更

            t2.viewStringArray();   //返す側の配列を表示
        }
    }

    class testClass2{

        //short配列
        short[] shortArrayReturn = new short[]{1, 2, 3};

        public short[] getShortArray(){

            return shortArrayReturn;
        }

        public void viewShortArray(){

            Console.WriteLine("{0},{1},{2}",
                                shortArrayReturn[0],
                                shortArrayReturn[1],
                                shortArrayReturn[2]);
            return;
        }

        //string配列
        string[] stringArrayReturn = new string[]{"あ", "い", "う"};

        public string[] getStringArray(){

            return stringArrayReturn;
        }

        public void viewStringArray(){

            Console.WriteLine("{0},{1},{2}",
                                stringArrayReturn[0],
                                stringArrayReturn[1],
                                stringArrayReturn[2]);
            return;
        }
    }
}

出力

1,2,3
999,2,3
あ,い,う
んんん,い,う

やっぱこのケースだと参照で返るな。

配列をローカルで宣言して返したりすると危険…か。

これマジ。