欢迎各界计算机爱好者加入,弘扬极客精神!

什么是引用类型?跟值类型又是哪些区别?

0 喜欢 0 不喜欢
问题关闭原因: enough answers
最新提问 11月 9, 2016 分类:SUPINFO课程 | 用户: 凌波微步 (4,516 分)  
已关闭 12月 5, 2016 用户:Re

15 个回答

0 喜欢 0 不喜欢
 
已采纳
值类型包括:内置值类型、用户自定义值类型、和枚举,如 int,float bool 等,以及struct等。
引用类型包括接口类型、用户自定义的类、委托等。如 string 、DateTime、数组等。
值类型与引用类型的本质区别有以下几点:
1.内存分配: 值类型是分配在栈中的;而引用类型是分配在堆中。
2.效率: 值类型效率高,不需要地址转换;引用类型效率较低,需要进行地址转换。
3.内存回收: 值类型使用完后立即回收;引用类型使用完后不立即回收,而是交给GC处理回收。
4.赋值操作: 值类型是创建一个新对象;引用类型创建一个引用。
5.类型扩展: 值类型不易扩展,所有值类型都是密封(seal)的,所以无法派生出新的值类型;引用类型具有多态的特性方便扩展。
最新回答 11月 9, 2016 用户: 45° (1,382 分)  
采纳于 12月 7, 2016 用户:Re
0 喜欢 0 不喜欢
引用类型指向的是地址,作为形参时,改变形参也同时改变了实参;值类型就相当于把参数复制了一个,创建了一个副本,更改副本不会对原来的参数造成影响。
最新回答 11月 9, 2016 用户: For | Tomorrow (3,046 分)  
1 喜欢 0 不喜欢
值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。
声明一个值类型变量,编译器会在栈上分配一个空间,这个空间对应着该值类型变量,空间里存储的就是该变量的值。引用类型的实例分配在堆上,新建一个引用类型实例,得到的变量值对应的是该实例的内存分配地址
最新回答 11月 9, 2016 用户: big and small (4,946 分)  
1 喜欢 0 不喜欢
值类型只会存储在栈中,可以用 == 比较两个值类型的大小。而引用类型会在栈当中存储变量。在堆中存储实例。两者中间有一个引用将两者联系起来
最新回答 11月 12, 2016 用户: Liwenwen (2,860 分)  
0 喜欢 0 不喜欢
引用类型大多数情况下会是自己定义的类,引用类型无法直接用 == 相比较,值类型只存储在栈中,而引用类型在栈中存储变量,在堆中存储实例
最新回答 11月 12, 2016 用户: 999 (2,150 分)  
0 喜欢 0 不喜欢

C#的值类型包括:结构体(数值类型、bool型、用户定义的结构体),枚举,可空类型。
C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。数组的元素,不管是引用类型还是值类型,都存储在托管堆上。
引 用类型在栈中存储一个引用,其实际的存储位置位于托管堆。简称引用类型部署在托管推上。值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实 例)存储;作为局部变量时,存储在栈上。值类型在内存管理方面具有更好的效率,并且不支持多态,适合用做存储数据的载体;引用类型支持多态,适合用于定义 应用程序的行为。

最新回答 11月 12, 2016 用户: ly (4,874 分)  
0 喜欢 0 不喜欢
形参和实参的传递方式有两种:第一种直接将实参的值传递给形参,第二种是将实参的首地址传递给形参

值类型是第一种方式,只是把值传递给了形参,但是形参的改变不会影响实参

引用类型是第二种方式,声明方式是   &a   ,其中,&是取地址符,也就是说实参把地址传递给了形参,这样函数体中对形参的操作也会影响实参
最新回答 11月 13, 2016 用户: weini520aou (672 分)  
0 喜欢 0 不喜欢
引用类型是对类型的实际值进行操作的数据类型。

引用类型能直接改变实参,而值类型只能改变实参的副本。
最新回答 11月 15, 2016 用户: LMY (2,898 分)  
0 喜欢 0 不喜欢
值类型就是值,想用就可以直接用。

引用类型,顾名思义,你想引用,还需要先给这个类型赋值,即将该类型指向一个值类型,然后才能用。

类似于数字5 和a=5
最新回答 11月 16, 2016 用户: 蜗牛 (2,984 分)  
0 喜欢 0 不喜欢
值类型是最基本的数据类型,如 int,float bool ,struct,enum等。
而引用类型指的是如 string 、DateTime、数组等。

两者最大的区别应该是存储方式的不同,一个在堆中,一个在栈中
最新回答 11月 17, 2016 用户: 江南晚来客 (1,796 分)  
...