编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么.我还没有看清楚这个问题.我理解堆栈是什么.但,
language-agnostic heap stack memory-management dynamic-memory-allocation
请帮助我们解决"几乎"的争议一切都是一个对象(Stack Overflow问题的答案作为一个新手,在学习C#之前有什么我应该注意的吗?).我认为就是这种情况,因为Visual Studio中的所有内容至少都显示为结构体.请张贴参考文献,以免它变成"现代傻瓜"(This American Life).
请注意,这个问题涉及C#,不一定是.NET,以及它如何处理引擎盖下的数据(显然它都是1和0).
以下是"一切都是对象"的评论:
对象的定义:"对象"作为类System.Object的继承者与"对象"作为类型与"对象"作为引用类型的实例."
可能重复:
堆栈和堆的内容和位置
堆和堆栈之间的C#有所不同.我刚刚意识到我一直认为堆栈是RAM而堆是硬盘.但现在我不确定它是否正确.如果不是,那么如果将它们存储在一个地方有什么区别?
我知道c#,就像Java一样,将源代码转换为字节码并由VM运行,因为C#案例是CIL存储在汇编中并由CLR执行.开发人员几乎不需要关心变量在堆栈上或堆上的位置(由GC处理)作为c ++,对吧?
他们是否有任何快速而直接的方式来证明变量存储在堆栈上或堆上?例如,如果我告诉某人,引用类型变量存储在堆上,或者本地值类型变量存储在堆栈上(对吗?).我怎样才能明确地表明这一点?在C++中,我可以获取变量的内存地址,并通过VS内存窗口查看存储在堆栈或堆内存中的值.
当我阅读"值和引用类型"一章的下一本书时,我脑海中浮现出一个问题:"值类型何时存储在堆栈中"?程序员无法初始化类中的任何值类型.因为当我们在类中初始化一些值类型的变量时,变量存储在堆中.
我的问题是:什么时候存储在堆栈中的值类型?
我已经读过有两个内存区域,一个堆栈和另一个堆栈.基本数据类型(如int,double,float等)存储在堆栈中,而引用类型存储在堆上.正如我们所知,堆栈是LIFO指首先删除最后推送的元素.现在假设下面的代码
int first = 10;
double second = 20.0;
float third = 3.0F;
Run Code Online (Sandbox Code Playgroud)
因此,first将首先推,然后second再third.所以thirdfloat类型的变量将位于堆栈顶部,但如果我使用以下代码(假设在C#中)
Console.WriteLine(second);
Run Code Online (Sandbox Code Playgroud)
second当变量third位于堆栈顶部时,如何访问变量的值?