6. 值類型和引用類型

類型被分為兩種:值類型(整數,bool struct char 小數)和引用類型(string 數組 自定義的類,內置的類)。
值類型只需要一段單獨的內存,用于存儲實際的數據,(單獨定義的時候放在棧中)
引用類型需要兩段內存
第一段存儲實際的數據,它總是位于堆中
第二段是一個引用,指向數據在堆中的存放位置

當我們使用引用類型賦值的時候,其實是賦值的引用類型的引用。
如果數組是一個值類型的數組,那么數組中直接存儲值,如果是一個引用類型的數組(數組中存儲的是引用類型),那么數組中存儲的是引用(內存地址)。

值類型和引用類型在內存中的表示

分析下面的變量在內存中的表示方式


       static void Test1()
        {
            int i = 34;
            int j = 34;
            int temp = 334;
            char c = 'a';
            bool b = true;
        }

        static void Test2()
        {
            int i = 34;
            int j = 234;
            string name = "zhangsan";

        }

        static void Test3()
        {
            string name = "zhangsan";
            string name2 = "lisi";
            name = name2;
            name = "wangwu";
            Console.WriteLine(name+":"+name2);
        }

       static void Test4()
        {
            Vector3 v = new Vector3();
            v.x = 100;
            v.y = 100;
            v.z = 100;
            Vector3 v2 = new Vector3();
            v2.x = 200;
            v2.y = 200;
            v2.z = 200;
            v2 = v;
            v2.x = 300;
            Console.WriteLine(v.x);
        }

        static void Test5()
        {
            Vector3[] vArray = new Vector3[]{ new Vector3(), new Vector3(), new Vector3() };
            Vector3 v1 = vArray[0];
            vArray[0].x = 100;
            v1.x = 200;
            Console.WriteLine(vArray[0].x);
        }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容