Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# nameof 연산자 완벽 정리: 변수·타입·멤버 이름을 문자열로 가져오는 방법

C#의 nameof 연산자는 변수, 타입, 메서드 등 코드 요소의 이름을 그대로 문자열 리터럴(string literal)로 반환하는 기능입니다. 하드코딩된 문자열 대신 사용하면 리팩토링 시에도 안전하게 이름을 유지할 수 있어 실무에서 매우 유용합니다.

nameof 기본 문법

예를 들어 다음과 같은 변수가 있다고 가정해 보겠습니다.

var vehicle = "motorbike";

이 변수의 이름을 문자열로 얻으려면 아래처럼 nameof를 사용하면 됩니다.

nameof(vehicle);

실행 결과는 변수에 담긴 값인 "motorbike"가 아니라, 변수 자체의 이름인 "vehicle"이라는 점에 주목하세요.

nameof 예제 코드

다음은 nameof 키워드를 활용한 전체 예제입니다.

using System;

public class Program {
    static void Main() {
        var vehicle = "motorbike";
        Console.WriteLine(nameof(vehicle));

        var time = DateTime.Now.ToLocalTime();
        Console.WriteLine(nameof(time));

        var a = false;
        Console.WriteLine(nameof(a));
    }
}

실행 결과

vehicle
time
a

출력 결과를 보면 각 변수에 저장된 값과 무관하게, 항상 변수의 이름 자체가 출력되는 것을 확인할 수 있습니다.

nameof의 주요 활용 사례

1. 예외 처리 시 매개변수 이름 검증

메서드 인자가 null인지 확인할 때 ArgumentException에 매개변수 이름을 전달하는 데 nameof를 자주 사용합니다.

public void Process(string data) {
    if (data == null)
        throw new ArgumentNullException(nameof(data));
}

2. 컴파일 타임 안전성 확보

문자열을 직접 하드코딩하면 변수나 속성의 이름이 변경될 때 문자열은 그대로 남아 버그가 발생할 수 있습니다. 반면 nameof는 컴파일 타임에 평가되기 때문에 이름이 바뀌면 함께 수정되며, 오타가 있으면 컴파일 오류로 즉시 잡아줍니다.

3. 이벤트 및 데이터 바인딩

WPF의 INotifyPropertyChanged 구현처럼 속성 이름을 문자열로 전달해야 하는 상황에서도 nameof를 사용하면 유지보수성이 크게 향상됩니다.

정리

nameof 연산자는 단순하지만 강력한 도구입니다. 문자열 하드코딩으로 인한 오류를 방지하고, IDE의 리팩토링 기능과도 완벽하게 호환되므로, 코드에서 요소 이름을 문자열로 참조해야 하는 모든 상황에서 적극적으로 활용하는 것이 좋습니다.