C# Generics - basit ve örnekli anlatım
 
Generic(Genel), c# da kod yazarken birçok gereksiz tekrardan kurtarmayi saglayan bir özelliktir.

"Generic benim deyimim ile tip bagimsiz yazilan kod demektir."

Bir örnek: 3 tane Enum tipim olsun. Ben istedigim bir enum tipinin üyelerini, id leri ile birlikte bana döndürecek bir metod yazmak istersem? Burada her enum tipi için ayri metod yazilmasi gibi bir amele islemi olacaktir.
 

public List<enumtipi1> GetEnumMemberList1()
{
 ....
}

public List<enumtipi2> GetEnumMemberList2()
{
 ....
}

public List<enumtipi3> GetEnumMemberList3()
{
 ....
}

Burada 3 metod yapildi çünkü her metodun dönüs tipi farklidir. Tipi de parametre olarak veremedigimizden böyle olmustur. Fakat c# generics ile metodlara dinamik tip gönderimi saglanmaktadir. Örnek:
 

public static Dictionary GetEnumMemberList<t>()
{
    Dictionary enumList = new Dictionary();
    foreach (T item in Enum.GetValues(typeof(T)))
    {
        enumList.Add(Convert.ToInt32(item), item.ToString());
    }

    return enumList;
}

Burada tek metod ile istedigim enum listesini dönebilirim. GetEnumMemberList metodu sonuna <t> ile dinamik tip alan metod olmasini sagliyoruz.

Bu sekilde metodu generic yaptim ve artik metod bir tip bekleyerek çalismaktadir. Tip parametre ile degilde metodun generic özelligi üzerinden aktarilir ve kod içerisinde asagidaki görüldügü gibi kullanilmaktadir.
 

var enumMemberList1 = GetEnumMemberList<enumtipi1>();
var enumMemberList2 = GetEnumMemberList<enumtipi2>();
var enumMemberList3 = GetEnumMemberList<enumtipi3>();

Kimler Generic Olabilir?
Generic bir class, interface veya bir metod olabilmektedir. Örnegimizde metodu generic yaptik.

Not 
Metodda parametre olarak tip gönderilemez. Bu nedenle ki biz metodu generic yapiyoruz oradan tasiyoruz.

C#'in Kendi Generic Tipine Bir Örnek
Örnegin: List sinifi generic bir siniftir. List<> içerisinde istedigimiz tipi yaziyoruz.

Generics, c#' in çok önemli ve güzel bir özelligidir.  
 

Author: Engin ATALAY
Date: 2.09.2016 18:35:07
View Count: 3745
 
 

COMMENTS
 
No comments yet. Be the first to comment who you are.
 
 
 
 
 
 
 
WRITE COMMENT
 
 
Your Name :
 
 
 
E-mail :
 
 
 
Your Message :
 
 
 
 
 
 
 
This project : ASP.NET MVC , RAZOR, Entity Framework , CSS , HTML , JQUERY(2.0.2) , AJAX the C# side-tier architecture was developed with logic.
 
Yukarı Çık