C# Generic Class

Leader-TR

Üye
11 Ağu 2018
182
50
Sanane
C# Generic Class
tJoGV2.gif
Generic sınıfları kullanarak birçok sınıftan tasarruf edebiliriz. Yani generic sınıf birçok sınıfın yaptığı işi tek başına yapabilir.

C#:
class Program
{
    static void Main(string[] args)
    {
        MyClass<string> t = new MyClass<string>();
        t.veriler = "merhaba";
    }
}

class MyClass<T>
{
    public T veriler { get; set; }
}
Yukarıda basit bir örnek bulunmakta. Burada anlatmak istediğim int, string, float vb.. her tür için ayrı bir class oluşturmaktansa sadece bir generic class ile bütün türleri kullanabiliriz. Yukarı main metodunun içerisinde MyClass generic classından hangi türden nesne oluşturursak veriler property'si o türden olacaktır.
Bunun yanı sıra generic classa vereceğimiz parametre türünü kısıtlayabiliriz.

C#:
class Program
{
    static void Main(string[] args)
    {
        MyClass<Ogrenci> t = new MyClass<Ogrenci>();
        t.veriler.no = 123;
    }
}

class Ogrenci
{
    public int no { get; set; }
    public string sınıf { get; set; }
}
class MyClass<T> where T : class
{
    public T veriler { get; set; }
}

Burada where keywordü ile generic classa parametre olarak sadece class alma şartı koyduk.
Generic class'lara birden fazla parametre vermemizde mümkündür ama vereceğimiz parametrenin ismini belirtmemiz kodun okunabilirliğini artıracaktır.

C#:
class Program
{
    static void Main(string[] args)
    {
        MyClass<Ogrenci, int> t = new MyClass<Ogrenci, int>();
        t.veriler.no = 123;
        t.not = 88;
    }
}

class Ogrenci
{
    public int no { get; set; }
    public string sınıf { get; set; }
}
class MyClass<TVeriler, TNot> where TVeriler : class where TNot : struct
{
    public TVeriler veriler { get; set; }
    public TNot not { get; set; }
}

Yukarıda generic class'da 2 adet parametre tanımladık. Biri TVeriler diğeri ise TNot. Fark ettiğiniz gibi parametreleri isimlendirirken başlarına T ve devamdaki ismi büyük harfle başlattık. Main metodunda generic class'tan nesne oluştururken 2 parametreyi de vermek zorundayız aksi taktirde hata alırız. Son olarak yukarıda 2 adet where keywordü kullandık. TVeriler'i class, TNot'u ise struct olarak tanımladık.
Not: Generic class'tan nesne tanımlarken parametre olarak verdiğimiz int değeri struct türü bir yapıdır.
tJoGV2.gif

aq3u4ls.png
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.