MA VPD Tech Blog.

C#의 알아두면 편할 기능 (2/3)

December 22, 2019 | 1 Minute Read

작성 2019년 12월 22일 김태겸

4. nameof 식 (C# 6.0 ~)

nameof 연산자는 변수, 형식 또는 멤버의 이름을 문자열 상수로 가져옵니다.

  • 예시
     Console.WriteLine(nameof(List<int>));  // output: List
     Console.WriteLine(nameof(List<int>.Count));  // output: Count
     Console.WriteLine(nameof(List<int>.Add));  // output: Add
    
     var numbers = new List<int> { 1, 2, 3 };
     Console.WriteLine(nameof(numbers));  // output: numbers
     Console.WriteLine(nameof(numbers.Count));  // output: Count
     Console.WriteLine(nameof(numbers.Add));  // output: Add
    
  • 활용
    • 예외를 일으킨 기호의 이름을 제공하는 방법
      if (IsNullOrWhiteSpace(lastName))
          throw new ArgumentException(message: "Cannot be blank", paramName: nameof(lastName));
      
    • INotifyPropertyChanged 인터페이스를 구현하는 XAML 기반 애플리케이션에서 사용하는 방법
      public string LastName
          {
              get { return lastName; }
              set
              {
                  if (value != lastName)
                  {
                      lastName = value;
                      PropertyChanged?.Invoke(this, 
                          new PropertyChangedEventArgs(nameof(LastName)));
                  }
              }
          }
      private string lastName;
      

5. Using Static (C# 6.0 ~)

using static 기능을 사용하여 단일 클래스의 정적 메소드를 가져올 수 있습니다. 예를들어 System.Console 클래스를 using static 을 이용하여 선언할 경우 Console.WriteLine() 대신 WriteLine()을 직접 사용할 수 있게 됩니다.

// using static 사용
using static System.Console;

namespace CS6
{
    class Program
    {
        static void Main(string[] args)
        {           
            // Console. 생략 가능 
            WriteLine("Markany");
        }
    }
}

6. 문자열 보간(포맷)기능 (C# 6.0)

기존 C#에서 문자열을 포맷팅 하기 위해 string.Format()안의 서식 문자열에 {0}, {1}, {2} 등과 같은 인수를 직접 넣어 해당 위치에 파라미터들이 들어가게 하였습니다. C# 6.0에서는 새로운 문자열을 안에 직접 집어 넣는 기능들을 추가하였습니다.

  • 기존 문자열 포맷 시
      string sOut = string.Format("{0}", "MARKANY");
      Console.WriteLine(sOut);
      //MARKANY 출력
    
  • 기능 사용 시
     string sOut = "Markany";
     int year = 2020;
     Console.WriteLine($"{sOut} {year.ToString()}");
     // Markany 2020 출력
    



로고