变量-C#引用类型存在栈里还是堆里?

问题描述

C#引用类型存在栈里还是堆里?

前几天去BAT某公司笔试。有一题C#引用类型存在哪里?以前也学过一点,知道C#栈里存着变量名称,
这个变量指向的对象在堆里,我就不知道这个引用类型到底是指栈里的变量,还是堆里的对象。
查了很多资料没有看明白,求专业人士指点。

解决方案

起码的常识。
只有作为局部变量的值类型在堆栈中,其它一律都在堆上,甚至包括作为类的成员的值类型。

解决方案二:

引用类型的值存在于堆上,但在栈里面会存在一个指针(引用),这个指针指向放在堆上的值的地址;据我理解应该是这样

解决方案三:

嗯,面试时常碰到这类问题,实存在于堆类型。。。

时间: 2024-08-10 21:06:13

变量-C#引用类型存在栈里还是堆里?的相关文章

一个类的属性是引用类型,那创建对象时候堆里保存的是地址还是值呢?

问题描述 publicclassUser{publicStringname="你好";publicStringdihzi="你好";}===========================================//测试类Useru=newUser();System.out.println(u.name==u.dihzi);System.out.println(u.name.equals(u.dihzi));=========================

深度剖析Java变量栈&对象堆

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配.当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用. 堆内存用于存放由new创建的对象和数组.在堆中分配的内存,由java虚拟机自动垃圾回收器来管理.在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中

JAVA Stack栈和Heap堆的区别(转)

      首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆.         在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语:        堆存储: heapstorage    堆存储分配: heapstorage allocation  堆存储管理: heap storage management         栈编址: stack addressing   栈变换:stack transformation  栈存

c语言stack(栈)和heap(堆)的使用详解_C 语言

一.预备知识-程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)-由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.2.堆区(heap)-一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收.注意它与数据结构中的堆是两回事,分配方式倒是类似于链表.3.全局区(静态区)(static)-全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另

[Java]Stack栈和Heap堆的区别(终结篇)[转]

首先分清楚Stack,Heap的中文翻译:Stack-栈,Heap-堆.         在中文里,Stack可以翻译为"堆栈",所以我直接查找了计算机术语里面堆和栈开头的词语:        堆存储: heapstorage    堆存储分配: heapstorage allocation  堆存储管理: heap storage management         栈编址: stack addressing   栈变换:stack transformation  栈存储器:sta

请教对象存储在堆中,哪对象中的数值型变量,属性,事件,方法都是存在堆中吗?我这样问对吗?

问题描述 请教对象存储在堆中,哪对象中的数值型变量,属性,事件,方法都是存在堆中吗?我这样问对吗? 解决方案 解决方案二:没错解决方案三:http://www.cnblogs.com/caomao/archive/2005/08/16/175459.html希望这篇文章对理解C#的对象模型有所帮助

穷,也要站在富人堆里

不要以为我在宣扬嫌贫爱富,也不要觉得我趋炎附势,我不过是在阐述一种有效的思维模式. 人类世界迄今为止,为什么是犹太人最聪明?最厉害?有无数的数据和事实表明,就连美国这样的世界屈指一数的强国,犹太人所占的人口比例虽然很少,但却可以统治和领导着美国乃至世界多个领域的潮流,关于这方面,我会单独写成一篇博文说明.日本有位穷其一生研究犹太人经销商法的思维和行为习惯的教授,叫手岛佑郎.30多年的研究成就了他名为<穷,也要站在富人堆里>的世界畅销书.听说有一次,手岛佑郎应北京最知名的一所大学邀请来做专题演讲

【winform】怎么在form2里的textbox里对form1的treeview节点之进行修改?

问题描述 [winform]怎么在form2里的textbox里对form1的treeview节点之进行修改? form1里有个treeview,现在选中其节点弹出form2的textbox 现在希望在textbox里输入的信息能同步修改该节点内容.并存入数据库中 请问各位高手们这个改怎么弄? 能不能给段代码过来? 解决方案 可以使用自定义事件,也可以传递form对象,通过它去访问它的变量或方法 解决方案二: Form2增加一个属性, TreeNode Node{get;set;} Form1的

在单元格里或层里出现滚动条

单元格 如何在单元格里或层里出现滚动条 解决思路:     主要是通过设置元素的CSS属性overflow(包含overflow-x和overflow-y)来实现. 具体步骤: 1.自动出现横向滚动条: <div style="width:200;height:200;overflow-x:auto"> <script> //使元素出现横向滚动条 document.write(new Array(20).join("!")) //使元素出现纵