Akan LINQ mengulang Tumpukan dalam pesanan LIFO [duplikat]

Dec 08 2020

Akankah metode LINQ mengulangi konten Stack (dan dalam kasus spesifik saya Stack ) dalam urutan LIFO (Last In, First Out) (yaitu: urutan yang sama akan muncul setiap elemen yang merupakan kebalikan dari urutan di yang didorong ke dalam tumpukan). Selain itu, karena bebas efek samping, apakah tumpukan akan berhenti muncul saat mengulanginya?

Sebuah pertanyaan sederhana, dan saya akan berasumsi Ya & Ya, tetapi yang sangat sederhana sehingga pencarian menghasilkan volume besar LINQ dan jawaban terkait Stack yang tidak ada dari hasil tak terhitung yang saya telusuri secara khusus menjawab kasus ini.

Jawaban

1 AndrewH Dec 08 2020 at 17:24

Iya.

Percobaan berikut menunjukkan bahwa itu mengikuti urutan LIFO Stack.

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");
        }       
    }
}

Keluaran:

Yes
Yes
And it will not pop the stack