一、值类型变量
直接上代码,代码内见注释
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]值也随着变化
结论:
引用变量传递的是变量本身(引用/地址/指针),新变量没有开辟新空间,他只是指向了引用变量,也就是相当于给原有的变量值提供了一个新的“别名”,新变量改变了值,本质上改变的是“被引用变量”本身的值。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除