티스토리 뷰
[Effective C# Item 13] 정적 클래스 멤버를 올바르게 초기화하라
정적 멤버를 포함하는 타입이 있다면 인스턴스를 생성하기 전에 반드시 정적 멤버 변수를 초기화해줘야 한다. 정적 멤버를 초기화하기 위해 C#은 정적 생성자와 정적 멤버 초기화 구문을 제공한다.
1. 정적 생성자
정적 생성자는 타입 내에 정의된 모든 메서드, 변수, 속성에 최초로 접근하기 전에 호출되는 특이한 메서드다. 이 메서드를 활용하여 정적 변수를 초기화하거나, 싱글턴 패턴을 적용해보거나, 생성자 호출 전이든 다양한 작업을 하기 편하다.
가끔 멤버 초기화 구문 대신 반드시 정적 생성자를 사용해야 하는 경우도 있는데 이전 멤버 초기화 구문을 사용하라 편에서도 나왔던 예외 처리를 해야할 경우다. 멤버 초기화 구문은 try-catch 구문을 사용할 수 없기 때문에 예외를 잡을 수 없고 따라서 아래와 같이 정적 생성자를 통해서 정적 멤버 변수의 초기화 시 예외 처리가 가능해진다.
2. 정적 초기화 구문
인스턴스 멤버 초기화 구문과 마찬가지로 간단하게 정적 멤버를 초기화하는 경우라면 정적 생성자 보다는 정적 초기화 구문을 사용하는 것이 간편하다.
정리
오늘은 좀 간단하다. 정리하자면 정적 클래스 멤버를 초기화할 때 정적 생성자와 정적 초기화 구문을 사용할 수 있다.
간단하게 사용할 거면 정적 초기화 구문을 사용하고 예외 처리가 필요하거나 다양한 동작을 구현할 때 정적 생성자를 사용하자!
정적 생성자라는 개념을 오늘 처음 알아서 재밌었다.
그리고 안 그래도 어제 정적 멤버 초기화하는 데서 좀 머리 아팠던 기억이 났다.
오늘 가서 다시 고쳐봐야겠다.
참조 - Effective C# <강력한 C# 코드를 구현하는 50가지 전략과 기법, 이펙티브>, 빌 와그너, 김명신, 한빛미디어
'Programming > Effective C#' 카테고리의 다른 글
[Effective C# Item 15] 불필요한 객체를 만들지 말라 (0) | 2020.10.18 |
---|---|
[Effective C# Item 14] 초기화 코드가 중복되는 것을 최소화해라 (0) | 2020.10.18 |
[Effective C# Item 12] 할당 구문보다 멤버 초기화 구문이 좋다 (0) | 2020.10.18 |
[Effective C# Item 11] .NET 리소스 관리에 대한 이해 (0) | 2020.10.18 |
[Effective C# Item 10] 베이스 클래스가 업그레이드된 경우에만 new 한정자를 사용하라 (0) | 2020.10.18 |