C# Generic Stack<T> Kullanımı

Stack<T> yapısı C#'ın generic collection yapılarından biridir. T ile belirttiğimiz tipte elemanlar tutar ve LIFO (Son giren ilk çıkar) mantığıyla elemanları dışarı çıkartır.

Push : Collection nesnemize yeni eleman ekler.
Pop : Collection'a son giren elemanı çekip bu elemanı collection'dan siler.
Peek : Collection'daki nesneyi silmeden son elemanı döndürür.

Şimdi örnek bir stack yapısı geliştirelim:

       public class Person
       {
           public string Name { get; set; }
           public string Surname { get; set; }
           public int Age { get; set; }

           public override string ToString()
           {
              return Name + " " + Surname + " Age: " + Age;
           }
        }
        static void Main(string[] args)
        {
            Stack<Person> personStack = new Stack<Person>();

            personStack.Push(new Person() 
                 { Name = "Ahmet", Surname = "Yilmaz", Age = 21 });
            personStack.Push(new Person() 
                 { Name = "Safak", Surname = "Unel", Age = 26 });
            personStack.Push(new Person() 
                 { Name = "Salih", Surname = "Sayar", Age = 42 });

            //Peeked: son eleman silmeden stack'teki son elemana bakiliyor
            //Popped: son eleman cekilip siliniyor
            Console.WriteLine("Peeked : {0}", personStack.Peek());
            Console.WriteLine("Popped : {0}", personStack.Pop());

            Console.WriteLine("\nPeeked : {0}", personStack.Peek());
            Console.WriteLine("Popped: {0}", personStack.Pop());

            Console.WriteLine("\nPeeked : {0}", personStack.Peek());
            Console.WriteLine("Popped: {0}", personStack.Pop());

            try
            {
                // eger stack'imiz bosalttiktan sora Peek veya Pop
                // metodlarimizi cagirirsak hata aliriz
                Console.WriteLine("\nPeeked : {0}", personStack.Peek());
                Console.WriteLine("Popped: {0}", personStack.Pop());
            }
            catch (Exception e)
            {
                Console.WriteLine("\nError: {0}", e.Message);
            }

            Console.ReadLine();
        }
    }

Çıktı:



Örnek Proje : GenericStackExample.rar

0 yorum :

Yorum Gönder