CodeBlanks Logo Icon CodeBlanks

Özet - Generic temelleri

C# kursu · Orta seviye · Ders 75/116

Generic sınıf ve metotları birleştirerek bir Stack<T> yazarsın.

Özet: Generic araç seti

Bu grupta generic sınıfları, generic metotları, tür kısıtlarını, çok parametreli generic yapıları ve generic-object farkını öğrendin. Şimdi bunları birleştirerek kendi Stack<T> sınıfını yazacaksın.

Stack, son giren ilk çıkar (LIFO) prensibiyle çalışır. Push ile öğe eklersin, Pop ile son eklenen öğeyi alırsın. Stack<int> ve Stack<string> aynı şablondan üretilir ama farklı türleri tip güvenli biçimde tutar. Generic sınıf tasarımı, gerçek bir veri yapısı üzerinde anlamlıdır.

Uygulama Stack<T> sınıfını tanımla

Stack<T> generic sınıfını tanımla. Özel alan: private List<T> _items = new List<T>();. Metotlar: public void Push(T item) çağırınca _items.Add(item); yapsın; public T Pop() son öğeyi alıp _items.RemoveAt(_items.Count - 1); ile silsin ve return last; yapsın. Main içinde Stack<int> üret; Push(10), Push(20) çağır; Pop()'u yazdır.

Örnek çözümü göster
class Stack<T> { private List<T> _items = new List<T>(); public void Push(T item) { _items.Add(item); } public T Pop() { T last = _items[_items.Count - 1]; _items.RemoveAt(_items.Count - 1); return last; } } yaz. Main'de var s = new Stack<int>(); s.Push(10); s.Push(20); Console.WriteLine(s.Pop()); ekle.
Örnek çözüm:
using System;
using System.Collections.Generic;

class Stack<T>
{
    private List<T> _items = new List<T>();

    public void Push(T item) { _items.Add(item); }

    public T Pop()
    {
        T last = _items[_items.Count - 1];
        _items.RemoveAt(_items.Count - 1);
        return last;
    }
}

class Program
{
    static void Main()
    {
        var s = new Stack<int>();
        s.Push(10);
        s.Push(20);
        Console.WriteLine(s.Pop());
    }
}

Uygulama Stack<string> ile de dene

Yukarıdaki Stack<T> sınıfını kullan. Main içinde ayrıca Stack<string> örneği üret; Push("Ayşe") ve Push("Ali") çağır; Pop()'u Console.WriteLine ile yaz.

Örnek çözümü göster
Main'e var names = new Stack<string>(); names.Push("Ayşe"); names.Push("Ali"); Console.WriteLine(names.Pop()); ekle.
Örnek çözüm:
using System;
using System.Collections.Generic;

class Stack<T>
{
    private List<T> _items = new List<T>();

    public void Push(T item) { _items.Add(item); }

    public T Pop()
    {
        T last = _items[_items.Count - 1];
        _items.RemoveAt(_items.Count - 1);
        return last;
    }
}

class Program
{
    static void Main()
    {
        var s = new Stack<int>();
        s.Push(10);
        s.Push(20);
        Console.WriteLine(s.Pop());

        var names = new Stack<string>();
        names.Push("Ayşe");
        names.Push("Ali");
        Console.WriteLine(names.Pop());
    }
}

Generic temelleri tamam

Tebrikler! Artık generic sınıf ve metotları, tür kısıtlarını ve generic-object farkını biliyorsun. Kendi Stack<T>'ini yazdın; aynı şablon hem int hem string ile tip güvenli biçimde çalıştı.

Sonraki grupta generic koleksiyonları derinlemesine inceleyeceğiz: List<T>'nin kapasite mekaniğini, Dictionary<K, V>'nin hash yapısını ve Queue/Stack'in FIFO/LIFO davranışını öğreneceksin. Generic temelleri, bu koleksiyonların nasıl çalıştığını anlamanın anahtarıdır.

Kendini test et

  1. Stack<T> hangi prensiple çalışır?

    • FIFO (ilk giren ilk çıkar)
    • LIFO (son giren ilk çıkar)
    • Alfabetik sıra
    • Rastgele sıra
    Cevabı göster

    LIFO (son giren ilk çıkar) — Doğru. Stack LIFO prensibiyle çalışır.

  2. Stack tür parametresi

    class Stack<____> { }
    Cevabı göster
    class Stack<T> { }

Orta seviye bölümündeki tüm dersler