【问题标题】:Will LINQ iterate a Stack in LIFO order [duplicate]LINQ会以LIFO顺序迭代堆栈[重复]
【发布时间】:2020-12-08 10:24:00
【问题描述】:

LINQ 方法是否会以 LIFO(后进先出)顺序迭代 Stack(在我的特定情况下为 Stack<T>)的内容(即:每个弹出的顺序相同元素,这与它们被推入堆栈的顺序相反)。此外,由于没有副作用,它会在迭代时避免弹出堆栈吗?

一个简单的问题,我会假设是和是,但一个如此简单的问题以至于搜索产生了大量与 LINQ 和 Stack 相关的答案,而我浏览的无数结果中没有一个专门回答这个案例。

【问题讨论】:

标签: c# .net linq


【解决方案1】:

是的。

以下实验表明它确实遵循 Stack 的 LIFO 顺序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class DoesLinqIterateAStackInLifo
{
    public static void Main()
    {
        var stack = new Stack<char>();
        stack.Push('s');
        stack.Push('e');
        stack.Push('Y');
        Console.WriteLine(stack.Aggregate(new StringBuilder(), (builder,letter) => builder.Append(letter)));
        Console.WriteLine(string.Join("",stack.ToList()));      
        if(stack.Count==3) 
        {
            Console.WriteLine("And it will not pop the stack");
        }       
    }
}

输出:

Yes
Yes
And it will not pop the stack
猜你喜欢
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-30
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
相关资源
最近更新 更多