引用定义
举一个例子
s1 代表在学生类中的一个对象,名字小明,8岁
s2 = s1
s1是学生对象小明,那么s2是谁?
结果是打印结果相同,那么s1和s2 到底是内容相同,还是说根本就是同一个对象?
我们可以做一个测试验证一下:
将s1后定义成—> 小明,10岁后打印s1和s2
结果是修改s1的分数后,打印出的s2也随之修改。这就充分说明了,s1和s2不是两个相等的,内容相同的对象,而根本就是同一个对象。
这就涉及到编程里的一个核心概念,也就是引用。(引用变量赋值)
变量通过一个箭头间接的指向一个对象就叫做引用。
通过案例我们可以发现一个矛盾,s1和s2可以比作两个不同的盒子,但是这两个盒子里却装着同一个对象,这与常识不符。这也就推翻了值类型的概念:s1和s2并不直接装载对象,他们只是装载了一个箭头,而两个不同的箭头共同指向了”小明“对象。
但讲到函数的时候说盒子里装了一个对象,怎么现在变成了箭头,难道值类型被推翻了?不是的,在C#中,既有引用类型,也有值类型。
值类型和引用类型
所有的变量类型分为两种——值类型struct,引用类型class
值类型
-基本数据类型。int, bool, float, double, char, byte, short 等等, 不包括string
引用类型
-除值类型以外都是引用类型,包括字符串、数组、Random、Student等等
值类型和引用类型,最明显的区别就在于赋值操作的含义不同。