关于C#堆与栈区别

引用变量值赋给一个相同类型变量引用同一堆中对象能举例子吗没太懂... 引用变量值赋给一个相同类型变量引用同一堆中对象 能举例子吗 没太懂 展开
 我来答
freeeeeewind
推荐于2018-04-22 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1341万
展开全部
C#中的堆(heap)是你实例化对象时,存放对象本体的地方;
而栈(Stack)是函数调用时,存放传递函数参数以及函数内数值变量的地方;
例子:
MyClass c1 = new MyClass;
MyClass c2 = c1;
在堆中建立一个MyClass(对象本体在堆中)然后将对该对象的引用放入(赋值)给c1;然后再让c2引用同一个在堆中的对象;这样c1和c2引用了同一个对象。

假设MyClass中有个方法
class MyClass
{
public int Add(int x, int y)
{

int sum = x + y;

return sum

}

}

当调用这个方法时
int z = c1.Add(10, 20)
那么参数10、20就是通过栈传递到Add方法中的;另外,在函数Add中,局部变量 sum 也在栈里!
栈的特点是,一旦调用结束后,所有存放在栈上的变量都被消除了(调用结束的清栈处理)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式