C#
최신 C# 기능
C# 11
C# 11 새기능
C# 11: Raw String Literal
C# 11: 문자열 내삽 복수라인
C# 11: u8 접미어
C# 11: Generic Math 지원
C# 11: Generic Attribute
C# 11: 리스트 패턴
C# 11: 파일 로컬 타입
C# 11: required modifier
C# 11: Auto-default struct
C# 11: ReadOnlySpan 패턴 매칭
C# 11: 확장된 nameof 범위
C# 11: nint, nuint
C# 11: ref 필드
C# 11: 소문자 타입명 경고
C# 11: 향상된 method group 변환
C# 10
VS 2022 설치
C# 10 global using
C# 10 File-scoped Namespace
C# 10 향상된 문자열 내삽
C# 10 향상된 람다식 유추
C# 10 struct 기능 향상
C# 10 record struct
C# 10 확장된 속성패턴
C# 10 향상된 명료한 할당
C# 10 Destructor 기능 개선
C# 9.0
C# 9 레코드 타입
C# 9 init accessor
C# 9 최상위 프로그램
C# 9 향상된 패턴 매칭
C# 9 향상된 Target Typing
C# 9 공변 리턴 타입
C# 9 Native Int 타입
C# 8.0
C# 8 디폴트 인터페이스 멤버
C# 8 패턴 매칭
C# 8 Nullable Reference Type
C# 8 인덱싱과 슬라이싱
C# 8 비동기 스트림
C# 8 using 선언
C# 8 널 병합 할당자
C# 8 구조체 읽기 전용 멤버
C# 8 기타 기능들
C# 7.0
C# 7.0 새기능
C# 7.0 패턴 매칭
C# 7.0 튜플
C# 7.0 로컬 함수
C# 7.0 out 파라미터
C# 7.0 리터럴 표현
C# 7.0 Deconstructor
C# 7.0 ref return
C# 7.0 async 리턴타입
C# 7.0 Expression-bodied
C# 7.0 throw expression
C# 6.0
C# 6.0 새기능
C# 6.0 널 조건 연산자
C# 6.0 문자열 내삽
C# 6.0 Dictionary초기자
C# 6.0 nameof 연산자
C# 6.0 using static문
C# 6.0 catch블럭 await
C# 6.0 Exception 필터
C# 6.0 자동 속성 초기자
C# 6.0 읽기전용 자동 속성
C# 6.0 Expression-bodied

C#으로 이해하는 자료구조
C# 프로그래밍 기초 실습 전자책
Expression-bodied member 사용

C#의 속성이나 메서드는 보통 여러 문장(statement)들로 구성된 블럭을 실행하게 된다. 하지만 속성이나 메서드의 Body 블럭이 간단한 경우, Statement Block을 사용하는 대신 간단한 함수식(expression)을 사용할 수 있는데, 이를 Expression-bodied member 표현이라 한다. 이는 기존의 람다식과 유사한 것으로 속성이나 메서드 Body를 간략한 람다식처럼 표현한 것이다. 예를 들어, 아래 예제에서 처럼 기존에는 Area 속성의 get 블럭안에 리턴 식을 표현했지만, C# 6.0에서는 이를 간략하게 람다 화살표로 표현하고 있다.

예제

// 기존의 속성
public int Area
{
    get 
    {
        return Height * Width;
    }
}

// C# 6.0의 Expression-bodied member 표현
public int Area => Height * Width;




다양한 Expression-bodied member 표현

메서드에서 Expression-bodied member를 사용하면 하나의 리턴 값을 가질 수 있고 혹은 void 리턴을 할 수도 있다. 속성에서 사용하는 Expression-bodied member는 getter로서 하나의 값을 리턴한다. 메서드나 속성 이외에도 인덱서, Operator 연산자 등에서 Expression-bodied member 표현을 사용할 수 있다. 아래 예제들은 이러한 다양한 종류의 Expression-bodied member 표현 예들이다.

예제

// 메서드에서 하나의 Point 객체 리턴
public Point Move(int x, int y) => new Point(X+x, Y+y); 

// 메서드에서 void 리턴
public void Print() => Console.WriteLine(data);

// 속성에서 get 리턴
public string Name => FirstName + " " + LastName; 

// 인덱서에서 Customer 객체 리턴
public Customer this[int id] => db.FindCustomer(id);

// 연산자 메서드 표현
public static Complex operator +(Complex a, Complex b) => a.Add(b); 




본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.