Study/C#

nameof() 연산자의 활용

13.d_dk 2021. 9. 29. 20:56
728x90
반응형

nameof() 연산자의 활용

  • nameof()는 인자로 받은 변수, 형식, 멤버의 이름 등의 다양한 타입을 문자열 자체로 반환하는 연산자
  • 이를 통해 여러 타입을 문자열로 구분하여 사용하는 부분에 있어 도움을 받을 수 있음
  • 여기서 제네릭 타입의 경우 닫힌 제네릭 타입(ex; Dictionary<string, double>)만 사용할 수 있음
  • 이 nameof() 연산자를 활용하는 예시는 3가지로 아래의 코드와 같음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 1. 파라미터명의 출력
// (여기서 'id'를 Hard coding 하지 않음; 추후에 'id'를 'identify'로 rename하여도 문제가 없음!; Refactoring에서 장점!)
throw new ArgumentException("Invalid argument", nameof(id));
 
// 2. 속성명을 nameof 로 추출
Console.WriteLine("{0}: {1}", nameof(objPerson.Height), objPerson.Height);
 
// 3. 사용하는 메서드들을 log에 추가
void Run() {
   Log(nameof(Run) + " : Started");
   // ... Run에 해당하는 동작들 ...
}
 
void Fly() {
   Log(nameof(Fly) + " : Started");
   // ... Fly에 해당하는 동작들 ...
}
cs

 

  • 위의 예시 코드들에서 볼 수 있는 장점 중 하나는 변수, 형식, 멤버의 이름 등이 수정되어도 문제를 발생시키지 않는다는 부분
  • 타입 자체를 문자열로 출력하기 때문에 이러한 출력이 필요할 때 불필요한 hard coding을 줄여 Refactoring 시 도움을 받을 수 있음

 

reference

 

반응형