值类型与引用类型

Posted hxjnet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了值类型与引用类型相关的知识,希望对你有一定的参考价值。

 

最近在做.NET开发的时候,同一个对象多次赋值,结果最终的List的内容完全一样,后来明白是值类型与引用类型未能理解透出

1、值类型与引用类型存储在不同的位置上,值类型存储在堆栈上,引用类型存储在托管堆上,这意味着值类型的每一次赋值都会创建该值的一个拷贝,而引用类型的每一次赋值都只是重新创建了一个引用,而不会在创造一个对象;

int i=1;

int a=i;

i=2;

int b=i;

此时 i是一个值类型,所以a,b实际上是对i的值进行了拷贝,此时a=1,b=2;

x = new Vecyor();

x.value = 50;

y=x;

y.value = 30;

此时 x,y都是引用类型,他们都表示对同一个对象的引用,所以y.value改变的同时x.value也改变了,即x.value ==y.value==30

 

2、由于引用类型是存储的对象的引用,则可将NULL值赋给引用类型

以上是关于值类型与引用类型的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中的值类型与引用类型

值类型与引用类型

值类型与引用类型

c#中值类型和引用类型的区别

值类型和引用类型的区别

c#中值类型与引用类型的值传递与引用传递