Generics bir class ve method tipi. Bu tipin ne avantaji var, islevi nedir.. Bunlari anlamak epeyi vakit alabilir.

Basit bir cerceve, application uzerinden ornek verirsek, Generics kullanmayarak bir liste olusturalim:

System.Collections.ArrayList list = new System.Collections.ArrayList();
// Add an integer to the list.
list.Add(3);
// Add a string to the list. This will compile, but may cause an error later.
list.Add("It is raining in Redmond.");

Burada "list" objesi, hem String hem int elemanlar icermekte. Bunu saglayabilmesi icin bir upcasting olmasi lazim cunku hem int hem string ayni kefeye koyabilmek icin bunlari ayni cinse dondurmesi lazim. Burada int ve string object sinifina upcast edilliyor. Burada bir sorun yok ama kullanici int ve string den haberdar olmayarak, icinden cikilmayacak bir hata yapabilir. Bunu engellemek icin ihtiyacimiz olan, definition esnasinda direk tek bir type a cast edilmesi. Burda da Generics class devreye su sekilde giriyor:
// The .NET Framework 2.0 way to create a list
List<int> list1 = new List<int>();
// No boxing, no casting:
list1.Add(3);
Bu listenin elemanlari integer olmak zorunda dolasiyla casting kaynakli bir hata cikmasi soz konusu degil. Iste Generics basitce bu ise yariyor..