방프리
21.02.07 Chapter3. 제네릭 활용 (Item 21) 본문
Item 21 : 타입 매개변수가 IDisposable을 구현한 경우를 대비하여 제네릭 클래스를 작성하라
제약조건은 두 가지 역할을 한다.
(1) 런타임 오류가 발생할 가능성이 있는 부분을 컴파일 타임 오류로 대체
(2) 타입 매개변수로 사용할 수 있는 타입을 명확히 규정하여 사용자에게 도움
하지만 타입 매개변수로 지정된 타입이 제약 조건을 통해 요구하는 작업 외에 다른 작업을 추가로 수행할 수 있는지에 대해서는 신경쓰지 않는다.
하단의 코드는 제네릭 메서드 내에서 타입 매개변수로 주어지는 타입을 이용해 인스턴스를 생성할 때의 처리다.
using 구문을 통해 해당 타입에 IDisposable이 구현되어 있는지 확인 후 해당 함수를 실행시키는 것이다.
(쉽게 생각해서 null 체크를 한 것이다.)
함수가 아닌 해당 제네릭 타입으로 클래스 멤버변수를 생성한다면, 다음과 같이 작성할 수 있다.
참고로 sealed를 선언하면 표준 Dispose 패턴을 모두 구현할 필요가 없어진다. 하지만, 파생 클래스를 생성할 수 없으니
유의해서 사용해야 한다.
한마디로 정리하자면, Dispose 함수 사용 시에 해당 내용이 있는지 없는지 체크 (NULL 체크!!!) 후 사용하자
'C# > Effective C#' 카테고리의 다른 글
21.03.14 Chapter3. 제네릭 활용 (Item 23) (0) | 2021.03.14 |
---|---|
21.03.07 Chapter3. 제네릭 활용 (Item 22) (0) | 2021.03.07 |
20.10.26 Chapter3. 제네릭 활용 (Item 20) (0) | 2020.10.26 |
20.10.22 Chapter3. 제네릭 활용 (Item 19) (0) | 2020.10.22 |
20.07.17 Chapter3. 제네릭 활용 (Item 18) (0) | 2020.07.17 |
Comments