展开全部
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 也在栈里!
栈的特点是,一旦调用结束后,所有存放在栈上的变量都被消除了(调用结束的清栈处理)
而栈(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 也在栈里!
栈的特点是,一旦调用结束后,所有存放在栈上的变量都被消除了(调用结束的清栈处理)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询