零基础转型C#软件工程师-17值类型与引用类型的区别

一、值类型变量

直接上代码,代码内见注释

 static void Test1()
        {
            int data1 = 100;
            int data2 = data1;//把data1的数据赋值给data2
            Console.WriteLine(#34;data1的数据是{data1},data2的数据是{data2}");//结果是:data1的数据是100,data2的数据是100
            Console.WriteLine("-------------------");
            data2 += 100;
            Console.WriteLine(#34;data1的数据是{data1},data2的数据是{data2}");//结果是:data1的数据是100,data2的数据是200
          //我们发现data2数值改变了,但是data1数值没有改变,
          //是因为他们是两个值类型变量。在新建data2的时候重新开辟了内存空间,将100赋值到了data2里面。
          //所以结论就是值类型传递的是变量“副本”,而不是变量本身,变量修改后互相没没有影响。
          //***************************
          //后期代码越来越复杂,可能不能在一个主程序内写,要分出好几个子程序。
          //哪里不明白的地方
          //可以Add_VChatId:"jingjianwang888888"
          //***************************
        }

二、引用类型的变量

直接看代码

static void Test2()
        {
            int[] data1 = { 1, 2};
            Console.WriteLine(#34;data1数组中第一个数据值={data1[0]}, data1数组中第二个数据值={data1[1]}");
            Console.WriteLine("------------------------");
            int[] data2 = data1;
            data2[1] += 3;//仅仅是加了data2中的第2个变量
            Console.WriteLine(#34;data1数组中第一个数据值={data1[0]}, data1数组中第二个数据值={data1[1]}");
            Console.WriteLine("----------------------");
            Console.WriteLine(#34;data2数组中第一个数据值={data2[0]}, data2数组中第二个数据值={data2[1]}");
        }
输出结果
data1数组中第一个数据值=1, data1数组中第二个数据值=2
------------------------
data1数组中第一个数据值=1, data1数组中第二个数据值=5
----------------------
data2数组中第一个数据值=1, data2数组中第二个数据值=5

data2[1] += 3;//仅仅是加了data2中的第2个变量;

可是第一个data1[1]也跟着一起变化.

也就是说修改了data2[1]中的值,data[1]值也随着变化

结论:

引用变量传递的是变量本身(引用/地址/指针),新变量没有开辟新空间,他只是指向了引用变量,也就是相当于给原有的变量值提供了一个新的“别名”,新变量改变了值,本质上改变的是“被引用变量”本身的值。

展开阅读全文

页面更新:2024-05-12

标签:类型   子程序   主程序   赋值   别名   数值   变量   软件工程师   结论   区别   代码   基础   数据

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top