다음 본문은 도서 이펙티브 C# (빌 와그너)에서 나오는 주제를 다룹니다.
할당 구문
- 생성자 본문에서 멤버 변수의 값을 할당하는 것을 말한다.
- 생성자가 여러개일 경우 누락의 우려가 있다.
public class MyClass()
{
List<string> names;
public MyClass()
{
names = new List<string>();
}
}
멤버 초기화 구문
- 멤버 초기화 구문에 의해 생성된 코드는 생성자 본문 앞에 덧붙여진다.
- 모든 생성자가 객체 생성 방법이 동일한 경우에 사용하면 좋다.
public class MyClass()
{
List<string> names = new List<string>();
}
멤버 초기화 구문을 사용하지 말아야하는 경우
1) 객체를 0이나 null로 초기화 하는 경우
- 기본 시스템 초기화 루틴은 직접 CPU명령을 수행하여 메모리 블록을 0으로 설정한다.
- 변수의 값을 0이나 null로 초기화한다면 불필요한 일을 추가적으로 하게 된다.
2) 모든 생성자의 객체 생성 방법이 동일하지 않은 경우
- 객체를 반복해서 초기화하게 될 여지가 있다.
3) 예외처리가 반드시 필요한 경우
- 멤버 초기화는 try문으로 감쌀 수 없기 때문에 초기화과정에서 에러가 나면 외부로 전파된다.
결론
- 언급된 3가지의 경우를 제외한다면 가급적 멤버초기화 구문을 사용하자.
'🌍 C# Study > 이펙티브 C#' 카테고리의 다른 글
[14] 초기화 코드가 중복되는 것을 최소화하라 (0) | 2021.04.25 |
---|---|
[13] 정적 클래스 멤버를 올바르게 초기화하라 (0) | 2021.04.25 |
[11] .NET 리소스 관리에 대한 이해 (0) | 2021.04.25 |
[10] 베이스 클래스가 업그레이드된 경우에만 new 한정자를 사용하라 (0) | 2021.04.23 |
[09] 박싱과 언박싱을 최소화하라 (0) | 2021.04.23 |