社区
C#
帖子详情
引用类型和值类型 问题
asia217
2017-07-17 09:22:18
引用类型运行与堆上,值类型运行与栈上。
我们熟知的程序都是以类开始(Wpf,Console),那么该类都是运行在堆上,
调用类的方法时,方法里面的局部变量(值类型)此时在堆里还是栈里呢
?
如果上面的问题答案是堆里,那么栈的使用场景会是什么样的呢?
...全文
258
7
打赏
收藏
引用类型和值类型 问题
引用类型运行与堆上,值类型运行与栈上。 我们熟知的程序都是以类开始(Wpf,Console),那么该类都是运行在堆上,调用类的方法时,方法里面的局部变量(值类型)此时在堆里还是栈里呢? 如果上面的问题答案是堆里,那么栈的使用场景会是什么样的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
正怒月神
2017-07-17
打赏
举报
回复
调用类的方法时,方法里面的局部变量(值类型)此时在堆里还是栈里呢?
在栈里。
threenewbee
2017-07-17
打赏
举报
回复
作为局部变量的值类型在栈上,其余都在堆上
asia217
2017-07-17
打赏
举报
回复
我想 :类的实例在堆上, 类的字段值在堆里,类的方法的声明在堆里。 声明类的变量在栈里,当调用方法时,会将方法内的局部变量放在栈里。 高手们,可以这样吗?
exception92
2017-07-17
打赏
举报
回复
值类型由栈分配内存,编译的时候都已经分配。
闭包客
2017-07-17
打赏
举报
回复
就是在栈里面……
秋的红果实
2017-07-17
打赏
举报
回复
我的理解是:程序在CRL执行时,都有一个专属的堆栈空间,程序载入后,程序的所有东西(变量、方法、语句)都被装入堆上,执行某个具体动作时,由JIT从载入到内存的堆里,找到相应逻辑(程序语句),生成CPU可以执行的指令,并压入栈顶,供CPU的指令系统取走执行 方法里面值类型变量,当然是在栈上分配
以专业开发人员为伍
2017-07-17
打赏
举报
回复
乱! 方法定义在进程的代码部分,跟数据部分是分开的。当加载DLL、EXE时的时候,加载到内存。并不纠结什么对象的“里边”。对象实例被某些方法执行,或者执行某些对象的方法,这是编译器做的事情,它知道如何索引代码段里边的代码部分,跟什么“堆、栈”无关。当调用一个方法时,自然是要把参数压入栈,此时简单值自然就是计算机一个基本数据足以表示了(例如直接把一个浮点数装入寄存器),而复杂的对象自然就只能用基本数据来表示堆索引。这些都是编译技术基础知识,你应该学习一下课程。
C#详解
值
类型
和
引用
类型
区别
首先,什么是
值
类型
,什么是
引用
类型
? 在C#中
值
类型
的变量直接存储数据,而
引用
类型
的变量持有的是数据的
引用
,数据存储在数据堆中。
值
类型
(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为
值
类型
。
值
类型
变量声明后,不管是否已经赋
值
,编译器为其分配内存。
引用
类型
值
类型
和
引用
类型
值
类型
和
引用
类型
的区别 1.
值
类型
的数据存储在内存的栈中;
引用
类型
的数据存储在内存的堆中,而内存单元中只存放堆中对象的 地址。 2.将一个
值
类型
变量赋给另一个
值
类型
变量时,将复制包含的
值
。
引用
类型
变量的赋
值
只复制对对象的
引用
,而不复制对象本身。 3.
值
类型
存取速度较快,
引用
类型
存取速度较慢。 4.
值
类型
从System.ValueType类派生,
引用
类型
从System.Obje...
值
类型
和
引用
类型
是什么 区别
1、简单比较
值
类型
的变量直接存储数据,而
引用
类型
的变量持有的是数据的
引用
,数据存储在数据堆中。
值
类型
(value type):byte,short,int,long,float,double,decimal,char,bool 和struct统称为
值
类型
。
值
类型
变量声明后,不管是否已经赋
值
,编译器为其分配内存。
引用
类型
(reference type):string和class统称为
引用
类型
。当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有...
golang
值
类型
与
引用
类型
的区别
1、golang
值
类型
与
引用
类型
的区别 1.1 本质存储区别
值
类型
与
引用
类型
的区别主要在于:
值
类型
的变量: 存储当前
类型
的存储的数据。
值
类型
包括数
值
类型
、bool、string、数组、struct结构体
引用
类型
的变量:存储地址,该地址对应的空间才是真正存储的数据。
引用
类型
包括:指针、slice切片、管道chan、map、以及interface等
类型
。 注意:golang中的
引用
类型
和
值
...
C#
值
类型
和
引用
类型
的区别
文章目录内存中的存储方式二者区别的补充与总结 C# 的变量
类型
可以分为
值
类型
和
引用
类型
。 常见的
值
类型
和
引用
类型
可参考下面这个表格: 注:C# 的 struct 是
值
类型
,这个很容易被忽略。 内存中的存储方式
值
类型
和
引用
类型
最大的区别,就是它们在内存中的存储方式不同。 也许在很多地方你会看到这么一句话:
值
类型
存储在栈中,
引用
类型
存储在堆中。 实际上,这并不是严谨的说法。比较完整的说法应该是:
引用
类型
的变量在栈中分配,
引用
类型
的实例在堆中分配(二段式)。相当于栈中存的是一个
引用
,这个
引用
指向了堆中具体
C#
110,561
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章