C#의 알아두면 편할 기능 (2/3)
작성 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 출력