C# 6.0 New Features
1. 엘비스 연산자
Before Code
After Code
var PageName = UserName?._Name ?? "Z1젼7rl발ㅈr";
2. 문자열 보간
Before Code
int x = 1,y=2;
string str = string.Format("{0}, {1}", x, y);
After Code
int x = 1,y=2;
string str = $"{x},{y}";
3. 딕셔너리(사전) 초기화
Before Code
After Code
4. nameof 연산자
C# 6.0의 name of 연산자는 타입, 메서드, 속성 등의 이름을 리턴하는 것으로 하드 코딩을 하지 않게 도움을 줍니다.
하드 코딩에 의한 타이핑 오류 방지에 도움이 됩니다.
Before Code
public Point Add(Point point)
{
if(point == null)
{
throw new ArgumentNullException("point");
}
}
After Code
public Point Add(Point point)
{
if(point == null)
{
throw new ArgumentNullException(nameof(point));
}
}
5. using static 문
지금까지는 클래스명,속성명으로 사용했습니다.
하지만 C# 6.0에서는 using static 클래스명을 작성하면 클래스명 없이 메서드를 직접 사용할 수 있게 됬습니다.
Before Code
namespace Z1젼7rl발ㅈr
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Z1젼7rl발ㅈr");
}
}
}
After Code
using static System.Console;
namespace Z1젼7rl발ㅈr
{
class Program
{
static void Main(string[] args)
{
WriteLine("Z1젼7rl발ㅈr");
}
}
}
6. 예외 필터
이 기능은 Visual Basic, F#에서는 지원되고 있었지만 C#에는 지금까지 지원되지 않았던 기능입니다.
예외 필터란 catch 블럭이 예외를 catch하기 전에 필터링 할 수 있도록 허용하는 기능입니다.
C# 6.0 문법에서는 catch 문 뒤에 추가적인 when 조건문을 사용하면 됩니다.
Before Code
After Code
7. catch 및 finally 블럭에 await
Code
try{ service = new ServiceClient(); await service.Save(data);}catch (Exception ex){ await LoggingService.Log(ex);}finally{ await service.Close();}
8. 자동 프로퍼티 초기화
이전에는 프로퍼티를 자동 생성하는 방법에서 초기 값을 설정하는 방법은 생성자를 만들어서 이를 해당 값에 할당하였습니다.
하지만 6.0에서는 곧바로 자동 속성을 만들면서 = "값" 을 통해 생성자 구현 없이 값을 할당할 수 있게 되었습니다.
Before Code
After Code
9. 읽기 전용 자동 프로퍼티
이전에는 자동 프로퍼티는 항상 get과 set을 함께 사용하였습니다.
하지만 6.0에서는 읽기 전용의 자동 프로퍼티를 쓸 수 있게 되었습니다..
즉 get만을 사용할 수 있게 됬습니다..
※ 값을 할당하지 않으면 컴파일러는 자동으로 default 값을 할당합니다.
Before Code
After Code
10. 식으로 구성된 메서드
Statement Block을 사용하는 대신 간단한 함수식을 사용할 수 있는데 이를 Expression-bodied member 표현이라고 합니다.
이는 기존의 람다식과 유사한 것으로 속성이나 메서드 body를 간략한 람다식처럼 표현합니다.
Code
'0x0a Programming > 0x0d C#' 카테고리의 다른 글
C# 7.0 New Features (1) | 2016.07.20 |
---|