VB.NET 2008/VB - 문법

문법 - 제네릭 형식

본클라쓰 2011. 4. 5. 17:01

제네릭 형식은 다양항 데이터 형식에 대해 같은 기능을 수행하도록 조정되는 단일 프로그래밍 요소이다.

 

유사한 예로 탈부착식 헤드를 가진 드라이버 세트를 들 수 있습니다. 돌려야 하는 나사를 확인한 다음 해당 나사의 올바른 헤드(일자, 십자, 별모양)를 선택한다. 드라이버 손잡이에 올바를 헤드를 넣은 다음 드라이버와 정확히 같은 기능, 즉 나사를 돌리는 작업을 수행하게 된다.

 

제네릭 형식을 정의할 때 하나 이상의 데이터 형식으로 제네릭 형식을 매개 변수화한다. 이렇게 하면 코드를 사용하여 데이터 형식을 요구 사항에 맞게 조정할 수 있다. 사용자 코드를 사용하여 다양한 데이터 형식에서 작업하는 제네릭 요소의 다양한 프로그래밍 요소를 선언할 수 있다. 선언된 요소는 해당 데이터 형식에 관계없이 모두 동일한 논리를 수행한다.

 

Public StringQ As New System.Collectionis.Generic.Queue(Of String)

 

 

이제 StringQ를 사용하여 String 값만으로 작업할 수 있다. StringQ는 Object 값에 대하여 일반화되지 않고 String에 한정되므로 런타임 바인딩 또는 형식 변환이 발생하지 않는다. 따라서 실행 시간이 절약되고 런타임 오류가 감소된다.

 

 

다음은 제네릭 클래스에 대한 기본 정의로 보여 준다.

 

Public Class ClassHolder(Of t)

    Public Sub ProcessNewItem(ByVal newItem As t)

        Dim tempItem As t

    End Sub

End Class

 

 

앞에서 설명한 기본 정의에는 t는 형식 매개 변수, 즉 클래스를 선언할 때 제공하는 데이터 형식에 대한 자리 표시자이다. 코드의 모든 위치에서 t에 대한 다양한 데이터 형식으로 제공하여 다양한 버번의 ClassHolder를 선언할 수 있다. 다음은 두 가지 선언을 보여준다.

 

Public integerClass As New ClassHolder(Of Integer)

public stringClass As New ClassHolder(Of String)

 

 

제네릭 형식은 특정 데이터 형식에서 작동하는 다양한 프로그래밍 요소를 선언하는 기초로 사용된다. 제네릭 형식을 대체할 수 있는 형식은 다음과 같다.

 

1. Object 데이터 형식

2. 형식별 형식 버전 - 각 버전은 String, Integer 같은 한 가지 특정한 데이터 형식이나 customer 같은 사용자 정의 형식에서 개별적으로 코딩되고 작동

 

제네릭 형식은 이러한 대체 형식에 비해 다음과 같은 이점이 있다.

 

형식 안정성. 제네릭 형식은 컴파일 타임 형식 검사를 수행한다. Object를 기반으로 하는 형식은 모든 데이터 형식을 수용할 수 있으므로 입력 데이터 형식을 받아들일 수 있는지 여부를 확인하는 코드를 작성해야 한다. 컴파일러는 제네릭 형식을 사용하여 런타임 이전에 형식 불일치를 catch 할 수 있다.

 

성능. 각 제네릭 형식이 단일 데이터 형식에 특정되므로 제네릭 형식은 데이터를 boxing 및 unboxing할 필요가 없다. Object를 기반으로 하는 작업에서는 입력 데이터 형식을 boxing하여 Object로 변환하고 출력 대상 데이터를 unboxing한다. boxing과 unboxing은 성능을 저하시킨다.

 

코드 통합. 제네릭 형식의 코드는 한 번만 정의해야 한다. 형식 관련 버전 집합은 각 버전에서 동일한 코드를 복제해야 한다. 각 버전이 서로 다른 특정 데이터 형식을 갖는다는 점만 다르다. 제네릭 형식을 사용하면 모든 형식 관련 버전이 원본 제네릭 형식에서 생성된다.

 

코드 재사용. 특정 데이터 형식에 종속되지 않는 코드는 다양한 제네릭 데이터 형식에서 다시 사용할 수 있다. 예상하지 못한 데이터 형식에서 다시 사용할 수 있는 경우도 많다.

 

IDE 지원. 제네릭 형식에서 선언된 생성된 형식을 사용하는 경우 코드를 개발하는 과정에서 IDE를 통해 많은 지원을 받을 수 있다.

 

제네릭 알고리즘. 제네릭 형식에는 형식 독립적인 추상 알고리즘을 사용하는 것이 좋다. 예를 들어, IComparable 인터페이스를 사용하여 항목을 정렬하는 제네릭 프로시저는 IComparable을 구현하는 데이터 형식에서 사용될 수 있다.

 

 

 

 

 

'VB.NET 2008 > VB - 문법' 카테고리의 다른 글

문법 - 데이터 형식의 변환  (0) 2011.04.05
문법 - Nullable 값 형식  (0) 2011.04.05
문법 - 데이터 형식  (0) 2011.04.05
문법 - 선언된 요소  (0) 2011.04.05
문법 - 제어 구조 밖으로 제어 전달  (0) 2011.04.04