namespace WhyGenericsExist
{
class Program
{
/*Genericler Neden Var
* Genericler bir kodu farklı tiplerde tekrar kullanabilmek için vardır.
* Varsayalım integer yığınına ihtiyacımız olsun. Fakat generic kullanmayalım.
* Bunun için ilk yol classımızı her gereken tip için teker teker oluşturmamızdır(IntStack,StringStack,...)
* İkinci yolda nesnemizi Object olarak tanımlayıp kodda sürekli obj=>int e çevirmemiz gerekecektir.
* İkinci yolumuzu bir örnekle gösterelim.
*/
public class ObjectStack
{
int position;
object[] data = new object[10];
public void Push(object obj) { data[position++] = obj; }
public object Pop()
{
return data[--position];
}
}
static void Main(string[] args)
{
ObjectStack stack = new ObjectStack();
stack.Push("s");//Integer Kullanmak istiyoruz fakat hata vermedi. Type Safety açısından zayıf.
int i = (int)stack.Pop();//Çalışırken hata verecek. Çünkü s integerea dönüştürülemez.
}