본문 바로가기

카테고리 없음

제네릭 클래스

반응형
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp26
{
    class MyClass<T>
    {
        private T[] ts;
        private int count = 0;
        public MyClass(int length)
        {
            ts = new T[length];
            count = length;
        }
        public void Insert(params T[] args)
        {
            for (int i = 0; i < args.Length; i++)
            {
                ts[i] = args[i];
            }
        }
        public void Print()
        {
            foreach (T item in ts)
            {
                Console.Write(item);
                Console.WriteLine();
            }
        }
        public T AddAll()
        {
            T sum = default(T);
            foreach (T item in ts)
            {
                sum = sum +(dynamic) item;
                //제네릭에서는 덧셈이 불가능 하다 (dynamic)변수는 컴파일시 형을 체크 하지 않는다 ,
            }
            return sum;
        }
    }
    class Program
    { 
        static void Main(string[] args)
        {
            MyClass<int> myClass = new MyClass<int>(10);
            MyClass<string> myClass1 = new MyClass<string>(5);

            myClass.Insert(1,2,3,4,5,6,7,8,9,10);
            myClass1.Insert("Tiger", "Lion");
            myClass.Print();
            myClass1.Print();
            Console.WriteLine(myClass.AddAll());
            Console.WriteLine();

        }
    }
}
반응형