ITEM 6 :: EFFECTIVE C#


안녕하세요, 여섯번째 시간입니다.


이번 챕터에는 로컬의 이름을 문자열로 반환하는 nameof()라고 하는 연산자에 대한 내용입니다. 특정 폴더의 이름이나, 클래스의 이름, 인터페이스, 네임스페이스, 타입, 변수 등의 로컬 이름을 손실없이 문자열로 반환하는 연산자입니다. 사용해본 적이 없는 저로써는 다소 생소한 기능이었으나, 내용을 보니 없으면 손이 더 갈 것 같은 연산자여서, 나름의 공부가 되었습니다. 자, 이름부터 생소한 nameof() 연산자에 대해 설명, 시작하겠습니다.

설명

  1. 항상 로컬 이름을 문자열로 반환하는 역할을 수행하는 연산자다.(대개 심볼의 이름을 평가하며, 타입, 변수, 인터페이스, 네임스페이스등에 대하여 사용할 수 있다.)
  2. 따라서, 해당하는 심볼(로컬) 이름을 바꾸거나 수정할 때도 손쉽게 변경 사항을 반영할 수 있다.
public static void ExceptionMessage(object thisCantBeNull)
{
        if(thisCantBeNull == null)
            throw new ArgumentNullException(nameof(thisCantBeNull),
                    "We told you this cant be null!");
}
  1. 위의 코드는 throw를 통해 object(심볼)의 이름을 반환하는 내용의 코드이다!

정리

즉, 심볼, 단순한 이름이나 클래스, 인터페이스, 파일경로에 있는 심볼의 이름만을 반환하는 연산자다. 솔직하게 말해서, 이 연산자를 사용해본 적이 없어, 글만 보고 어디에 사용해야겠다, 이런 느낌은 아직 받지 못했다. 하지만, 마이크로소프트 사의 엔지니어들이 필요없는 기능을 개발했다곤 생각하기 어려우므로 머리 속 한 구석에 넣어놔야겠다. 짧지만, 오늘은 여기까지.