posted by 방랑군 2012. 1. 7. 16:56

출처 :  http://blog.naver.com/PostView.nhn?blogId=alfustnals&logNo=140142225754&categoryNo=41&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=search

 제너릭(Generic)이란??

 1] 타입 인수를 사용하여 일반화된 클래스나 메서드를 정의하는 기법

 2] 내부 구조나 알고리즘은 동일하게 하되, 취급하는 자료형이 다른 클래스나 메서드가

     필요할때 사용한다.

 3] 일반화된 클래스나 메서드를 정의하는 기법

 4] 코드량 감소 | 캐스팅 하지 않음으로 인한 속도 증가 효과

 제너릭 클래스

 1] 여러 자료형을 가지는 연산에서 컬렉션과 Object 처럼 여러 자료형을 같이 사용할 수

     있게 하는 방법 --> 자료형 한번 주면 따로 형변환 필요없어서 좋다..

 2] 멤버변수 타입을 미리 결정하지 않고, 클래스를 사용 할 떄 결정

 3] 클래스 이름을 여러개 기억 하지 못함.

 일반 클래스 VS 제너릭 클래스 

 using System.Collections;

 namespace genericTest
 {
    class Program
    {
        static void Main(string[] args)
        {
            classTest clsInt = new classTest(44);
            Console.Write("클래스 인트 : ");
            Console.WriteLine((int)clsInt.Value + 44);

            classTest clsbool = new classTest(false);
            Console.Write("클래스 부울 : ");
            Console.WriteLine((bool)clsbool.Value);

            classTest clsStr = new classTest("도망노비님");
            Console.Write("클래스 스트링 : ");
            Console.WriteLine(clsStr.Value.ToString());

          

            genericTest<int> generInt = new genericTest<int>(44);
            Console.Write("제네릭 인트 : ");
            Console.WriteLine(generInt.Value + 44);

            genericTest<bool> generbool = new genericTest<bool>(true);
            Console.WriteLine("제네릭 부울 : " + generbool.Value);

            genericTest<string> generStr = new genericTest<string>("노비");
            Console.WriteLine("제네릭 스트링 : " + generStr.Value);
        }
    }

    class genericTest<T>
    {
        private T value;

        public genericTest(T value)
        {
            this.value = value;
        }

        public T Value
        {
            get { return this.value; }
            set { this.value = value; }
        }
    }

    class classTest
    {
        private object value;
        public classTest(object value)
        {
            this.value = value;
        }
        public object Value
        {
            get { return this.value; }
            set { this.value = value; }
        }

     }
  }

[출처] [C#] 제너릭(Generic) - 제너릭 클래스 / 메서드 : 첫번째 이야기|작성자 도망노비