菜鸟问题 值类型和引用类型的定义和区别

863922230 2009-01-05 09:50:11
值类型和引用类型的定义和区别
...全文
1691 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2009-01-05
  • 打赏
  • 举报
回复
1楼最好去看看什么是堆(Heap)什么是堆栈(Stack)...别搞个单元出来忽悠lz...
zlb789 2009-01-05
  • 打赏
  • 举报
回复
up
glt3260053 2009-01-05
  • 打赏
  • 举报
回复
WWW.GOOGLE.COM自己搜索吧!上边有好多!
能自己找的最好别提问
HDNGO 2009-01-05
  • 打赏
  • 举报
回复
一个是现金,一个是存折。。。。
vrhero 2009-01-05
  • 打赏
  • 举报
回复
这种问题你该去看MSDN...详尽而且没有歧义...
david_anwei 2009-01-05
  • 打赏
  • 举报
回复
值类型:
单元直接存放“有效值”
如:
int a=3;
则a内存单元就放的是3

引用类型:
单元放的是另外一个对象的引用(地址)
如:
Form form1=new Form();
就是说,在内存中开辟了一个对象new Form(),form1内存单元存放的是那个对象的地址,并非对象本身
wuyq11 2009-01-05
  • 打赏
  • 举报
回复
结构体和枚举类型属于值类型,其余都为引用类型。
引用类型存储在托管堆上,同时需要存储额外的信息,受GC的控制。
值类型存储在线程栈中,不受GC控制,出了作用域,自动释放。
值类型的赋值和传递,需要进行字段的复制和存储,而引用类型只传递指针。
通常在作为参数传递和作为返回值传递时,如果数据过大,不易用值类型。
http://www.cnblogs.com/freewl/archive/2008/10/19/1314610.html
hechenqingtian 2009-01-05
  • 打赏
  • 举报
回复
.NET将数据类型分为值类型(value type)和引用类型(reference type)

一个具有值类型(value type)的数据存放在栈内的一个变量中。即是在栈中分配内存空间,直接存储所包含的值,其值就代表数据本身。值类型的数据具有较快的存取速度。

一个具有引用类型(reference type)的数据并不驻留在栈中,而是存储于堆中。即是在堆中分配内存空间,不直接存储所包含的值,而是指向所要存储的值,其值代表的是所指向的地址。当访问一个具有引用类型的数据时,需要到栈中检查变量的内容,该变量引用堆中的一个实际数据。引用类型的数据比值类型的数据具有更大的存储规模和较低的访问速度。

值类型
(1)这个类型分配在哪里? 分配在栈上
(2)变量是怎么表示的? 值类型变量是局部复制
(3)基类型是什么? 必须继承自System.ValueType
(4)这个类型能作为其他类型的基类吗? 不能。值类型是密封的,不能被继承
(5)默认的参数传递是什么? 变量是按值传递的(也就是,一个变量的副本被传入被调用的函数)
(6)这个类型能重写System.Object.Finalize()吗 不能。值类型不好放在堆上,因此不需要被终结。
(7)我可以为这个类型定义构造函数吗? 是的,但是默认的构造函数被保留(也就是自定义构造函数必须全部带有参数)
(8)这个类型的变量什么时候消亡? 当它们越出定义的作用域时

引 用 类 型
(1)这个类型分配在哪里?
分配在托管堆上

(2)变量是怎么表示的?
引用类型变量指向被分配得实例所占的内存

(3)基类型是什么?
可以继承自除了System.ValueType以外的任何类型,只要那个类型不是sealed的

(4)这个类型能作为其他类型的基类吗?
是的。如果这个类型不是密封的,它可以作为其他类型的基类

(5)默认的参数传递是什么?
变量是按引用传递(例如,变量的地址传入被调用的函数)

(6)这个类型能重写System.Object.Finalize()吗
可以间接地重写

(7)我可以为这个类型定义构造函数吗?
当然!

(8)这个类型的变量什么时候消亡?
当托管堆被垃圾回收时。
Smart 2009-01-05
  • 打赏
  • 举报
回复
值类型
int i=100;
int j=i;
j和i在内存中分配不同的空间,j中存的也是值

引用数据类型
string s1="hello";
string s2=s1;
s2存的是s1在内存中的地址而非值
sunbin19840405 2009-01-05
  • 打赏
  • 举报
回复
值:栈中存放具体值。如:数值型
引用:堆中,存放地址 如:数组,对象。

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧