26 Ağustos 2015

Generics 2 : Neden Generic Kullanmalıyız.

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.
        }