
Effective C# Itme6
nameof()연산자
임의의 기호(형식, 멤버, 변수 등)의 이름에 해당하는 문자열을 반환한다.public string Name { get { return name; } set { if (value != name) { name = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Name)); } } } private string name;nameof() 연산자를 사용했기 때문에 속성의 이름을 변경할 경우 이벤트의 인자로 전달해야 하는 문자열도 쉽게 변경할 수 있다.
디버깅 및 유지보수의 용이성
디버깅 메시지가 변수 이름을 출력하므로 디버깅 및 유지보수에 용이하다.public class Perosn { public string FirstName { get; set; } public string LastName { get; set; } } class Program { static void Main() { string propertyName = nameof(Person.FirstName); Console.WriteLine(propertyName); } }FirstNamenameof()를 사용시 rename작업시 실수를 줄일 수 있다.
public static void ExceptionMessage(object thisCantBeNull) { if (thisCantBeNull == null) throw new ArgumentNullException(nameof(thisCantBeNull), "We told you this cant be null"); }nameof를 사용하면 변수의 이름을 변경할 때마다 해당 이름을 일일이 찾아 수정할 필요가 없다.
nameof()는 변수의 이름을 참조하므로 이름이 변경되면 자동으로 업데이트되어 유지보수성을 향상시킨다.