식 본문 멤버(Expression Bodied Members)
식 본문 정의를 사용할때 간결하게 멤버를 구현할 수 있다.
C# 버전별로 지원되는 멤버가 나누어져 있습니다.
C# 6
- 메서드
- 속성 get
C# 7.0
- 생성자
- 소멸자
- 속성 set
- 인덱서
하나하나 예제를 보면서 설명해보자.
메서드
모든 class는 object class를 상속한다.
그러므로 object class의 멤버인 ToString을 재정의해서 사용할 수 있다.
ToString 메서드(return string)와 DisplayName(return void)이라는 메서드를 간결하게 사용한 예제이다.
public class Person { public Person(string firstName, string lastName) { fname = firstName; lname = lastName; } private string fname; private string lname; public override string ToString() => $"{fname} {lname}".Trim(); public void DisplayName() => Console.WriteLine(ToString()); } | cs |
중간 광고
속성 get / set
속성 get 접근자를 구현하기 위해서는 단순히 속성값을 반환하는 단일 식에 대해서만 정의가 가능하다.(return 문 사용x)
속성 set 접근자도 필드에 값을 할당하는 한 줄 식에 대해서만 가능하다.
public class LocalItem { // 필드 private int _Index; private string _Title; // 속성 get private int Index => _Index; // 속성 get/set private string Title { get => _Title; set => _Title = value; } // 생성자 public LocalItem(int index) => _Index = index; } | cs |
인덱서
인덱서도 속성과 동일한 방법으로 구현하면 된다.
public class LocalItem { private string[] _Type = { "Seoul", "Incheon", "Gangwon", "Busan", "Ulsan", "Daegu", "Daejeon" }; public string this[int i] { get => _Type[i]; set => _Type[i] = value; } } | cs |
'개발 > C#' 카테고리의 다른 글
Http 응답 상태 코드 301? 302? 정체를 파악해보자. (5) | 2019.07.11 |
---|---|
직렬화와 역직렬화(feat.JSON) (1) | 2019.05.03 |
[C#] #if 전처리기에 대해서 알아보자. (0) | 2018.08.06 |
[C#] Linq를 이용해서 n개의 값을 random하게 추출 (0) | 2018.07.27 |
text에서 newline tag 를 br태그로 변경 (0) | 2018.05.17 |