Czy LINQ dokona iteracji stosu w kolejności LIFO [duplikat]
Czy metody LINQ będą iterować zawartość stosu (iw moim konkretnym przypadku Stack
Proste pytanie i założyłbym, że tak i tak, ale tak proste, że wyszukiwanie dało ogromne ilości odpowiedzi związanych z LINQ i stosem, z których żaden z niezliczonych wyników, które przeglądałem, nie odpowiedział konkretnie w tym przypadku.
Odpowiedzi
Tak.
Poniższy eksperyment pokazuje, że postępuje zgodnie z kolejnością LIFO stosu.
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");
}
}
}
Wynik:
Yes
Yes
And it will not pop the stack