포스트를 만든 목적
Effective C# 을 읽고 내가 공부하기 위해서 만들었다.
내용
관련 링크
여기서 말하는 연쇄적인 생성자 호출이란, 생성자가 호출하는 생성자를 뜻한다.
C++ 에선 이런 경우, private 로 함수 하나 선언해서, 생성자에서 호출 해서 구현하고 있다.
언제 생성자 내에서 생성자를 사용하는게 좋은가?
- 생성자들 구현 코드가 중복될 경우(생성자들의 교집합을 한 생성자에 작성하고, 이를 수행한다.) - 코드 생략
주의해야 할 점은 무엇인가?
- 생성자 내에서 연쇄적으로 호출된 생성자가 또 다시 다른 생성자를 호출하는 행동은 주의해야 한다. 나중에 어떤 생성자를 거쳤는지 알기 힘들기 때문이다.
클래스의 내부 동작 순서를 알면, 이해가 좀 더 쉽게 될 것이다.
클래스의 내부 동작 순서는 어떻게 되는가?
- static 멤버 변수가 있다면, 이를 0으로 초기화
- static 멤버 변수가 있고, 선언시 초기화 루틴이 있다면 수행
- 기반 클래스가 있다면, 기반클래스의 static 생성자 수행
- static 생성자 수행
- 멤버 변수가 있다면, 0으로 초기화
- 멤버 변수가 있고, 선언시 초기화 루틴이 있다면, 수행
- 기반 클래스가 있다면, 기반 클래스의 생성자 수행
- 생성자 수행
결론
- 생성자가 많고, 같은 부분이 겹친다면, 무조건 쓰자.
여담
- 무척 졸리다!
- 위에 "위임 생성자" 라고 표기를 했는데, 마땅히 대체될 명사가 없어, "류광님의 블로그"에서 쓰인데로 썻다.
'책 정리 > Effective C#' 카테고리의 다른 글
item 19, 상속보다는 interface를 정의하고 구현하는 것이 좋다. (1) | 2010.07.07 |
---|---|
item 18, 표준 Dispose 패턴을 구현하라. (2) | 2010.07.06 |
item 17, boxing과 unboxing을 최소화하라 (0) | 2010.07.04 |
item 16, Garbage를 최소화 하라. (0) | 2010.07.03 |
item 15, 자원해제를 위해서 using과 try/finally를 이용해라 (0) | 2010.07.03 |
item 13, static 클래스 멤버는 static 생성자를 사용하여 초기화 하라. (0) | 2010.07.01 |
item 12, 할당문보다는 변수 초기화를 사용하는 편이 더 좋다 (0) | 2010.06.30 |
item 11, foreach 루프가 더 좋다. (0) | 2010.06.29 |
item 10, GetHashCode()의 함정을 유의하라 (0) | 2010.06.27 |
item 9, ReferenceEquals(), static Equals(), instance Equals(), operator==의 상호 연관성을 이해해라. (0) | 2010.06.26 |
최근댓글