Ana Sayfa Hakkımda Dersler Blog Mikrofonda İletişim Projeler
Dersler TEMEL · C#

C# Temelleri — Generic Tipler

9 dk okuma · Emre Ulutabak
1
Generic nedir?

Bir kutu düşün. Bazen içine elma koyarsın, bazen kalem, bazen kitap. Kutunun kendisi değişmez — sadece içindeki değişir.

Generic de tam böyle çalışır. Aynı kodu farklı tipler için tekrar yazmak yerine, tipi dışarıdan parametre olarak alırsın.

2
Neden kullanılır?

Generic olmadan aynı işi int için de, string için de, başka bir tip için de ayrı ayrı yazmak gerekir. Bu hem tekrar hem de hata riskidir.

Generic yapılar tip güvenliğini korurken kodu yeniden kullanılabilir kılar.

3
Generic metot
csharp
public T IlkElemaniGetir<T>(List<T> liste)
{
    if (liste.Count == 0)
        throw new InvalidOperationException("Liste boş.");

    return liste[0];
}

// Kullanım:
var sayilar = new List<int> { 10, 20, 30 };
var isimler = new List<string> { "Ali", "Veli", "Ayşe" };

Console.WriteLine(IlkElemaniGetir(sayilar));  // 10
Console.WriteLine(IlkElemaniGetir(isimler)); // Ali
💡
<T> ifadesi 'tip parametresi' anlamına gelir. T yerine istediğin ismi kullanabilirsin ama T en yaygın gelenektir.
4
Generic sınıf

Zaten kullandığın List<T> ve Dictionary<TKey, TValue> birer generic sınıftır. Kendi generic sınıfını da yazabilirsin.

csharp
public class Kutu<T>
{
    private T _icerik;

    public void Koy(T nesne)
    {
        _icerik = nesne;
    }

    public T Al()
    {
        return _icerik;
    }
}

// Kullanım:
var elmaliKutu = new Kutu<string>();
elmaliKutu.Koy("Elma");
Console.WriteLine(elmaliKutu.Al()); // Elma

var sayiKutu = new Kutu<int>();
sayiKutu.Koy(42);
Console.WriteLine(sayiKutu.Al()); // 42
5
Altın kurallar
💡
Generic yapılar tip güvenlidir. Yanlış tip verirsen derleme hatası alırsın, runtime'da değil.
💡
List<T>, Dictionary<K,V>, IRepository<T> — bunların hepsi generic. Kullandığın her yerde bu mantık var.
💡
Generic'i 'tekrar yazmamak için şablon' olarak düşün.
MİNİ QUIZ
Generic tipler hakkında hangisi doğrudur?
Generic yapılar yalnızca int tipi için çalışır
T harfi zorunludur, başka harf kullanılamaz
Generic yapılar tip güvenliğini korur ve kodu yeniden kullanılabilir kılar
List<T> generic bir yapı değildir