黑马程序员技术交流社区

标题: 值类型和引用类型的区别 [打印本页]

作者: 一叶一花    时间: 2014-2-15 15:20
标题: 值类型和引用类型的区别
本帖最后由 一叶一花 于 2014-2-15 22:09 编辑

如题 值类型和引用类型的区别是什么啊  ?希望能举个例子说明一下
作者: 许庭洲    时间: 2014-2-15 17:19
1. 将一个值类型变量赋值给另一个值类型变量时候,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身;
2. 值类型不可能派生出新的类型,所有的值类型均隐士派生自Systen.ValueType。但是与引用类型相同的是,结构也可以实现接口;
3.值类型不可能包含null值,然而,可空类型功能允许将null赋给值类型;
4.每种值类型均有一个隐士的默认构造函数来初始化该类型的默认值。
作者: 一点红    时间: 2014-2-15 21:56
1.值类型的数据存储在内存的栈中;引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。
2.值类型存取速度快,引用类型存取速度慢。
3.值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用
4.值类型继承自System.ValueType,引用类型继承自System.Object
6.值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。

作者: 王忠杰    时间: 2014-2-15 22:59
使用out关键字时,必须在方法里面对字段进行赋值,而且必须在使用之前进行赋值,方法外面赋不赋值无所谓,即使你再方法外面赋值,调用带有out关键字方法的时候,自动会对字段重新赋值
使用ref关键字时,既可以在外面对字段进行赋初值,也可以在方法里面对字段进行赋初值

作者: 王忠杰    时间: 2014-2-15 23:00
王忠杰 发表于 2014-2-15 22:59
使用out关键字时,必须在方法里面对字段进行赋值,而且必须在使用之前进行赋值,方法外面赋不赋值无所谓, ...

回复错了....不好意思
作者: 一叶一花    时间: 2014-2-16 10:25
谢谢,回答的很好




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2