• ||
    .NET Framework Generic Type에 관하여... ( 디지털 카메라를 이용한 독서시스템 )
  • 송인재(20기) 2010/05/27
  •  

  • 박싱(Boxing)과 언박싱(UnBoxing)

    데이터 타입의 종류는 여러가지가 있지만 크게는 값 타입과 참조 타입이라는 두개의 카테고리로 구분됨.
    이 두 카테고리에 속한 데이터 타입간의 형변환은 박싱과 언박싱이 발생하게 되는데 박싱은 값 타입을 참조 타입을 변환하는 것을 말하고 언 박싱은 박싱의 반대로 참조 타입을 값 타입으로 것을 의미한다
    즉, 참조 타입과 값 타입을 사용하기 편리하게 분리하여 담는다고 할 때 참조 타입은 박스 안에 담고 값 타입은 박스에 담지 않은 채 옆에 쌓아 둔다고 가정을 하면, 이럴 경우 값 타입도 박스에 저장할 필요가
    생겨서 박스에 담을 경우 이것을 박싱이라고 하고 박스에 담겨 있는 값 타입을 다시 박스 밖으로 꺼내는 것을 언박싱이라고 하면 이 둘을 구분짓는데 조금 쉽다.

    박싱 (Boxing) : 값 -> 참조
    언박싱 (UnBoxing) : 참조 -> 값

    문제는 이 박싱 / 언박싱 과정에서 내부적으로는 많은 리소스를 소비한다.
    그렇기 때문에 불필요한 메모리 사용 및 어플리케이션의 성능 저하는 피할 수 없는 문제가 된다.
    그러나 .NetFramework 2.0버젼 이후는 제네릭이 추가됨에 따라 이 문제를 해결 할 수 있게 되었다.

    제네릭은 컬렉션에 저장되는 데이터의 타입을 미리 지정한다. 그리고 지정된 타입만 컬렉션에 저장됨으로써 박싱/언박싱이 발생하지 않는다.

    제네릭 형식 정의와 사용
    //제네릭을 사용하기 위한 Using문 선언
    using System.Collections.Generic

    1. Generic Class Type
    class GeneriClass<T> //이런식으로 클래스를 선언할때 Type의 약자인 T를 명시적으로 선언한다.

    2. Generic Method Type
    public T GenericMethod<T> (T arg) 이런식으로 메소드 선언시 타입을 지정

    제네릭의 제한 사항과 제약 사항(Limitation and Constraint)

    제한 사항 1. 제네릭이 적용되는 클레스는 ContextBoundObject로 부터 파생될 수 없다.
     
    코드를 컴파일 할 시에는 오류를 발생하지 않으나 빌드 후 실행하여 보면 TypeLoadException 오류가 발생한다.
     
    제한 사항 2. 열거형(enum)에 사용될 수 없다.
     
    제한 사항 3. Reflection을 이용해서 생성되는 동적 메서드는 제네릭 형식을 취할 수 없다.

  •  
  • TRACKBACK : http://www.swssm.org/trackback.php?id=389
  •  
  •  
  • [prev] ... 1 2 3 4 5 6 7 8 9 10 ... [next]
 
삼성전자 소프트웨어 멤버십
과제 Tech Note 입니다.

최근 글