본문 바로가기

워크/C# 6,0

Nameof Expressions (nameof 연산자)

nameof 연산자는 C# 6.0에서 도입되었으며, 변수, 타입 또는 멤버의 이름을 문자열로 가져오는 데 사용됩니다. 이 연산자는 주로 예외 처리, 로깅, 속성 변경 알림과 같은 시나리오에서 변수나 속성의 이름을 하드코딩하지 않기 위해 사용됩니다. nameof를 사용하면 코드의 리팩토링이나 이름 변경 시 문제를 예방할 수 있습니다.

 

다음은 nameof 연산자를 사용한 예시 C# 코드입니다:

using System;

public class Student
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (string.IsNullOrEmpty(value))
            {
                // nameof 연산자를 사용하여 속성의 이름을 동적으로 가져옴
                throw new ArgumentException($"{nameof(Name)} cannot be null or empty.");
            }

            _name = value;
        }
    }
}

class Program
{
    static void Main()
    {
        try
        {
            var student = new Student();
            student.Name = "";  // 빈 문자열을 할당하면 예외가 발생
        }
        catch (ArgumentException ex)
        {
            Console.WriteLine(ex.Message);
            // 출력: Name cannot be null or empty.
        }
    }
}

위의 예제에서 nameof(Name)은 "Name"이라는 문자열을 반환합니다. 만약 나중에 Name 속성의 이름을 변경하더라도, nameof 연산자를 사용한 코드 부분은 자동으로 업데이트되므로 오류를 방지할 수 있습니다.