值类型: 每个实例都会保留的有一份独有的数据拷贝,一般以结构体、枚举或者元组的形式出现。
引用类型:每个实例共享同一份数据来源,一般以类的形式出现。
用通俗的话来说就是,值类型就像是复印一份报告一样,复印了之后,修改原件上的内容,复印件的内容不会改变;而复制一个引用类型,则相当于我共享我的电脑给你使用,当你改变我电脑里面的数据时,我使用的时候数据就会变为你改变的。可能举例有些不生动、形象,但是希望看官能够明白我所说的意思。
值类型和引用类型的区别:
值类型和引用类型最明显的区别在于被复制之后。当一个值类型被复制的时候,就相当于创造了一个完全独立的实例,这个实例有属于自己的独有的数据,不会因为其他实例的数据变化而有所改变。而引用类型的复制,在改变一个实例的时候,另一个实例也会随之改变。
什么时候该用值类型呢:
1.要用==运算符来比较实例的数据时;
2.希望某个实例的拷贝能保持独立的状态时;
3.数据会被多个线程所使用时;
什么时候该用引用类型呢:
1.要用==运算符来比较实例的身份时;
2.希望创建一个共享的可变对象时;