공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
오랜만에 포스팅합니다.
지난 포스팅에서는 C# 속성과 static 클래스, 메소드, 필드, 속성에 대해 공부했습니다.
2019/04/25 - [C#] - C#문법-16 : 속성과 static 클래스, 메소드, 필드, 속성
이번 포스팅에서는 제네릭에 대해 공부합니다.
보통 클래스를 정의할 때 클래스 내의 모든 데이터의 타입을 지정해줍니다.
때로는 클래스의 거의 모든 부분이 동일한데 일부 데이터의 타입만 다른 경우가
있을 수 있습니다. 예를 들어서 입력받은 값의 2배를 반환하는 클래스가 있을 때
이 클래스에 int 타입의 필드들만 존재한다면, double 타입의 값들은 입력할 수가
없게 됩니다.
이런 경우에 제네릭 타입을 사용하면 int 뿐 아니라 double, float 등 다양한
실수 타입까지도 사용할 수 있습니다.
제네릭 타입은 특정 타입을 지정하지 않고 데이터 타입을 타입 파라미터로
받아들이도록 클래스를 정의합니다.
자바의 제네릭과 동일합니다.
특정 타입이아닌 예제처럼 클래스 이름 옆에 <임의의 대문자> 를 넣어줍니다.
여기서는 타입 파라미터의 첫 알파벳인 T를 사용했지만,
사용하기에 따라 원하는 알파벳을 사용하면 됩니다.
제네릭 클래스의 사용
또한 .Net Framework에 많은 제네릭 클래스들이 있습니다.
특별히 System.Collections.Generic 네임스페이스에 있는 모든 자료구조와 관련된
클래스들은 제네릭타입입니다.
우리가 잘 아는 것에는 List<T>, Dictionary<T>, LinkedList<T>등의 클래스들이
있습니다.
제네릭 타입제약
제네릭을 선언할 때 타입 파라미터가 Value 타입인지 Reference 타입인지 아니면
특정 부모클래스를 상속받은 클래스인지 등등을 지정할 수 있습니다.
[where : 제약조건] 으로 where 뒤에 붙일 제약조건을 선언하면 됩니다.
ex)
이상입니다.
다음에는 인터페이스에 대해 공부합니다.
'C#' 카테고리의 다른 글
C#문법-19 : Delegate - 1, delegate란?, 기본 사용 법 (0) | 2019.06.12 |
---|---|
C#문법-18 : 인터페이스 (0) | 2019.06.12 |
C#문법-16 : 속성과 static 클래스, 메소드, 필드, 속성 (0) | 2019.04.25 |
C#문법-15 : 클래스 상속 (0) | 2019.04.25 |
C#문법-14 : 접근 제한자 public, interal, protected, private (1) | 2019.04.25 |