C# 中关于引用类型和值类型的问题

 我来答
tonalilili
推荐于2016-03-11 · TA获得超过1.6万个赞
知道大有可为答主
回答量:8050
采纳率:71%
帮助的人:3064万
展开全部
我这两天也在学这个知识点,搜啊搜,又翻书以及在电子书里搜索。

【杨中科老师的视频里】写:int、char、bool、datetime等类型都属于值类型,赋值时是值传递,传递一份拷贝到新开辟的内存空间里。 类的实例化对象则是引用类型,赋值的时候是引用传递。

【c#高级编程第七版里】里写:在C#中,引用类型用类定义,值类型用结构定义。要声明引用类型,C#和Visual Basic 使用class 关键字。在使用引用类型时,需要声明一个变量,必须在托管堆上给该对象分配内存。

【网上搜来的】:C#中,任何引用类型的变量,都是在堆上分配的。(强制声明stackalloc等特殊情况除外)。关键字new就是用于开辟一块新的空间。

函数内部直接定义的值类型,比如你在函数内部定义了一个int a,是在栈上面分配内存。而对象内部的成员变量(除非静态),不管是值类型还是引用类型,它都只是整个对象的一部分,而对象是类的实例,因此对象是在堆上分配内存的。
Axure夜话
2014-09-10 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
采纳数:1197 获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监

向TA提问 私信TA
展开全部
简单的这么去理解,基本的数据类型如int,long等分配在栈上,引用数据类型分配在堆上
答案自己去对应吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
空雪梦见
2014-09-10 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1191万
展开全部
1、堆
2、堆
3、堆
4、堆
5、堆

class类型的对象只能创建在托管堆上。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式