C#堆和栈的区别

堆与栈都是内存分配机制

栈:后进先出的数据结构,用于存储局部变量和方法产生的上下文信息. 值类型,和方法的局部变量通常都在栈中保存

堆:内存大小动态变化,更适合存数据结构或者对象

堆栈对象,C#里面采用的是先进后出,(FILO):First in last Out

Stack<int> stack = new Stack<int>();
//使用push进行压栈操作
stack.Push(1);
stack.Push(2);
Console.WriteLine(stack.Count);//获取栈中数据的数量
Console.WriteLine(stack.Pop());//出栈
Console.WriteLine(stack.Count);
//栈分为泛型与非泛型
Stack s1 = new Stack();
s1.Push(1);
s1.Push("a");
s1.Push(true);
s1.Push(null);
s1.Push(new int[] { 1, 2, 3, 4, 5 });
//遍历栈中的内容
foreach (var i in s1)
{
    Console.WriteLine(i);
}

队列:先进先出的数据结构,属于集合.  First in First Out(FIFO)

Queue q1 = new Queue();
q1.Enqueue(1);
q1.Enqueue(2);
q1.Enqueue(3);
//取出队首的数据并从队列中移除
Console.WriteLine(q1.Dequeue());
//取出队首的数据
Console.WriteLine(q1.Peek());
Console.WriteLine(q1.Peek());

object[] array = new object[5];
//把队列中的数据复制到数组中
q1.CopyTo(array, 0);
foreach (var item in array)
{
    Console.WriteLine(item);
}

//反省队列
Queue<int> q2 = new Queue<int>();
q2.Enqueue(1);
q2.Enqueue(2);

使用方式和非泛型对象一样,只不过对类型有要求

使用场景:使用栈可以进行算法优化,使用队列可以进行广度的优先搜索,例如对图像进行遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上位机_0x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值