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

发布一下 0 0

一、值类型变量

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

 static void Test1()        {            int data1 = 100;            int data2 = data1;//把data1的数据赋值给data2            Console.WriteLine($"data1的数据是{data1},data2的数据是{data2}");//结果是:data1的数据是100,data2的数据是100            Console.WriteLine("-------------------");            data2 += 100;            Console.WriteLine($"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($"data1数组中第一个数据值={data1[0]}, data1数组中第二个数据值={data1[1]}");            Console.WriteLine("------------------------");            int[] data2 = data1;            data2[1] += 3;//仅仅是加了data2中的第2个变量            Console.WriteLine($"data1数组中第一个数据值={data1[0]}, data1数组中第二个数据值={data1[1]}");            Console.WriteLine("----------------------");            Console.WriteLine($"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]值也随着变化

结论:

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

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/207856.html