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

"Generic benim deyimim ile tip bağımsız yazılan kod demektir."

Bir örnek: 3 tane Enum tipim olsun. Ben istediğim bir enum tipinin üyelerini, id leri ile birlikte bana döndürecek bir metod yazmak istersem? Burada her enum tipi için ayrı metod yazılması gibi bir amele işlemi olacaktır.
 

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

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

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

Burada 3 metod yapıldı çünkü her metodun dönüş tipi farklıdır. Tipi de parametre olarak veremediğimizden böyle olmuştur. Fakat c# generics ile metodlara dinamik tip gönderimi sağlanmaktadır. Ö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 istediğim enum listesini dönebilirim. GetEnumMemberList metodu sonuna <t> ile dinamik tip alan metod olmasını sağlıyoruz.

Bu şekilde metodu generic yaptım ve artık metod bir tip bekleyerek çalışmaktadır. Tip parametre ile değilde metodun generic özelliği üzerinden aktarılır ve kod içerisinde aşağıdaki görüldüğü gibi kullanılmaktadır.
 

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

Kimler Generic Olabilir?
Generic bir class, interface veya bir metod olabilmektedir. Örneğimizde metodu generic yaptık.

Not 
Metodda parametre olarak tip gönderilemez. Bu nedenle ki biz metodu generic yapıyoruz oradan taşıyoruz.

C#'ın Kendi Generic Tipine Bir Örnek
Örneğin: List sınıfı generic bir sınıftır. List<> içerisinde istediğimiz tipi yazıyoruz.

Generics, c#' ın çok önemli ve güzel bir özelliğidir.  
 

Author: Engin ATALAY
Date: 02.09.2016 18:35:07
View Count: 905
 
 

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