외규장각 도서 환수 모금 캠페인

Generic이란?

Interesting/C# 2008. 11. 8. 13:58

이 기능은  C++의 템플릿 기능이라고 보시면 됩니다.
Framework 1.0에는 없던 기능으로서 2.0에 새로 생겼습니다.

우선 Generic의 장점
1. Type Checking 불필요
2. boxing 불필요
3. Type Casting 불필요
4. 위와 과정 3개가 없어지므로 성능의 향상



generic의 설명을 확실하게 해줄 그림입니다.
이것을 보시면 generic이란게 무엇인지 확실히 알수 있을 것입니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace generic_test
{
    class Obj
    {
        public Object t;
        public Object u;
        public Obj(Object _t, Object _u)
        {
            t = _t;
            u = _u;
        }
    }
    class Gen<T, U>
    {
        public T t;
        public U u;
        public Gen(T _t, U _u)
        {
            t = _t;
            u = _u;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Obj oa = new Obj("Hello", " World");
            Console.WriteLine((string)oa.t + (string)oa.u);

            Gen<string, string> ga = new Gen<string,string>("Hello, ", "World");
            Console.WriteLine(ga.t + ga.u);

            Obj ob = new Obj(10.125, 2008);
            Console.WriteLine((double)ob.t + (int)ob.u);

            Gen<double, int> gb = new Gen<double, int>(10.125, 2005);
            Console.WriteLine(gb.t + gb.u);
        }
    }
}


위의 소스를 보게 되면 main에서 generic을 것과 사용하지 않은 을 모두 넣었습니다.
사용방법은 오브젝트 선언 후 (Class Obj) 그 클래스를 담을 수 있는 generic을 선언(Class Gen)
이것을 메인에서 선언 후 사용하면 됩니다.

main에서 보시면 아시겠지만 generic을 사용하지 않을 때는 타입캐스팅을 해주어야만 합니다.
하지만 그에 비해 사용하면 타입캐스팅은 해주지 않아도 됩니다.

개발자가 직접 원하는 형태의 데이터를 담을 수 있게 <>로 안에 타입을 선언해주고 사용하면 됩니다.

Posted by 닉네임영역
,


사랑합니다. 편안히 잠드소서