Yazılım geliştirme aşamasında kaçınılması gereken en önemli konuların başında gereksiz kod tekrarlarından kaçınarak gerek zaman gerek enerji kayıplarından kaçınmaktır. Buna örnek verecek olursak; Araba galerisi için yazılan bir sınıf düşünelim ve bu sınıfın ArabaEkle(…) adında ve eklenecek arabayı (otomobil, kamyon, kamyonet, minibüs vs) parametre alan bir metotunun olduğunu farzedelim. Bu durumda araba çeşidi kadar bu metotu override etmemiz lazım ama bakıldığında eklenecek arabanın türü dışında değişen kod parçası olmayacaktır. Bu sorunu çözmenin en kolay yolu C# içerisinde gelen generic yapıları kullanmaktır.
Generic yapının mantığı şu: Ne türde bir verinin geleceği önceden bildirilmek üzere sana gelen her türde veriyi kabul et.
Örnek olarak generic yapıda oluşturulmuş bir metotu inceleyelim ve bu metot üzerinde generic yapıda metot oluşturmayı öğrenelim.
ublic static void EkranaYaz<T>(T yazilacakNesne)
{
Console.WriteLine(yazilacakNesne.ToString());
}
Yukarıdaki kodda metodun tanımlandığı satır: public static void EkranaYaz<T>(T yazilacakNesne)
Burada kalın olarak yazılan <T> ifadesi metoda verilecek nesnenin tipini ifade ediyor ve parametre listesinde de görüleceği üzere parametre tipi olarak belirtilen T gösterilmiştir. Burada ki bilinmeyen tür mantığı aslında matematikte ki x değerine benziyor. x’e ne verirseniz değeri odur, burada da T’ye ne verirseniz türü odur.
Şimdi de oluşturulan bu generic metodu çağırma yöntemine bakalım.
EkranaYaz<int>(1);
EkranaYaz<string>("Selam");
EkranaYaz<double>(2.1);
Bu çağırmalarda görüldüğü üzere metodu çağırırken:
İlkinde <int> ifadesi ile metodu bir int türüne ait veri ile çağıracağını metoda bildiriyor.
İkincisinde <string> ifadesi ile metodu bir string türüne ait veri ile çağıracağını metoda bildiriyor.
C#’ta generic yapı kısaca ve genel hattı ile bu şekilde kullanılmaktadır.