C#Generics (한국어)
Generic 은 특정 형식이 아닌 일반적인 형식을 의미합니다. C#에서 generic 은 특정 데이터 유형에 특정하지 않음을 의미합니다.
C#할 수 있을 정의하는 일반적인 클래스,인터페이스,추상 클래스 분야,방법,정적 방법,특성,이벤트,대리인 및 사업자를 사용하여 입력 매개변수는 없이 특정 데이터 형식입니다. 유형 매개 변수는 제네릭 유형의 인스턴스를 만들 때 지정된 특정 유형의 자리 표시 자입니다.
제네릭 형식은 형식 이름 뒤에 꺾쇠 괄호에 형식 매개 변수를 지정하여 선언됩니다(예:, TypeName<T>
여기서T
는 형식 매개 변수입니다.
일반 Class
일반적인 클래스가 정의된 유형 매개 변수를 사용하여 각도에서 괄호 후에 주석을 사용하는 것이 중요합니다. 다음은 일반 클래스를 정의합니다.
위의DataStore
는 일반적인 클래스입니다., T
이라고 입력 매개 변수로 사용될 수 있는 형식의 필드는,속성,방법,매개 변수,유형이 반환,그리고 대리인DataStore
클래스입니다. 예를 들어,Data
는 일반적인 속성이기 때문에 우리가 사용 유형을 매개 변수를T
으로 입력하는 대신 특정 데이터 형식입니다.
T
를 사용할 필요는 없습니다. 유형 매개 변수에 임의의 이름을 지정할 수 있습니다., 일반적으로T
는 하나의 유형 매개 변수 만있을 때 사용됩니다. 를 사용하는 것이 좋 더 읽기 쉬운 형식을 매개 변수 이름을 요구 사항에 따라 다음과 같TSession
,TKey
,TValue
etc. 에 대해 더 알아보 입력 매개 변수명 지침정의할 수도 있습니다 여러 유형 매개변수를 쉼표로 구분됩니다.
일반 클래스 인스턴스화
꺾쇠 괄호에 실제 유형을 지정하여 일반 클래스 인스턴스를 만들 수 있습니다., 다음은 제네릭 클래스DataStore
의 인스턴스를 만듭니다.
위에,우리는 우리를 지정한string
유형에서 각괄호를 생성하는 동안 인스턴스입니다. 따라서T
는 컴파일 타임에 전체 클래스에서string
유형으로 대체됩니다. 따라서Data
속성의 유형은string
입니다.
다음 그림은 제네릭의 작동 방식을 보여줍니다.,
에 할당할 수 있는 문자열 값을Data
을 제공합니다. 문자열 이외의 값을 할당하려고하면 컴파일 타임 오류가 발생합니다.
지정할 수 있습니다 다양한 데이터 유형에 대한 다른 개체로서,다음과 같습니다.
클래스 일반적인 특성
- 일반적인 클래스가 증가 재사용. 형식 매개 변수가 많을수록 재사용이 가능하다는 것을 의미합니다., 그러나 일반화가 너무 많으면 코드를 이해하고 유지하기가 어렵습니다.
- 일반적인 클래스가 될 수 있습니다 기본 클래스가 다른 일반 또는 제네릭이 아닌 클래스 또는 추상 클래스입니다.
- 일반적인 클래스에서 파생될 수 있습 다른 일반 또는 non-일반 인터페이스 클래스,또는 추상 클래스입니다.
일반 필드
일반 클래스에는 일반 필드가 포함될 수 있습니다. 그러나 초기화 할 수 없습니다.
다음을 선언하는 일반적인 배열입니다.,
일반적인 방법
방법으로 선언된 입력 매개변수에 대한 형식 또는 변수라고 하는 일반적인 방법입니다.
위의AddorUpdate()
및GetData()
방법은 일반적인 방법입니다. 실제 데이터의 유형item
매개 변수 지정된 시간에서의 인스턴스화DataStore<T>
클래스로 아래와 같습니다.,
는 일반적인 매개변수 유형과 함께 사용할 수 있는 여러 매개변수와 함께 또는없이 아닌 일반적인 매개 변수익 유형입니다. 다음은 유효한 제네릭 메소드 오버로딩입니다.
비 제네릭 클래스는 아래 그림과 같이 꺾쇠 괄호에 형식 매개 변수를 지정하여 제네릭 메소드를 포함 할 수 있습니다.
제네릭의 장점
- 제네릭은 코드의 재사용 성을 증가시킵니다. 다른 데이터 유형을 처리 할 코드를 작성하지 않아도됩니다.
- 제네릭은 유형-안전합니다., 정의에 지정된 것과 다른 데이터 유형을 사용하려고하면 컴파일 타임 오류가 발생합니다.
- Generic 은 권투 및 언 박싱의 가능성을 제거하기 때문에 성능 이점이 있습니다. 리>팔자>