2. - C# 6.0은 기존의 문법을 이용한 코딩에서 문자열
을
줄이는 방향으로 개편되었다.
- 낮은 프레임워크 버전에서도 이용가능하다.
C# 6.0 업데이트
3. 3
01
자동 구현 속성을 사용할 경우 생성자 없이 초깃값을 부여할 수 있다.
Class Person
{
public string Name { get; set; } = “Jane”;
//생성자 생략
private string [ 식별자 ] = “Jane”;
public string Name
{
get { return [ 식별자 ]; }
set { [식별자] = value; }
}
}
자동 구현 속성의 초기화 구문
Set 과 같은 설정자를 생략하여 읽기 전용 속성으로 만드는 것도 가능하
다.
기존에 사용한 readonly 예약어 생략
4. 4
02
람다식을 이용하여 메서드를 정의할 수 있다.
public class Vector
{
double x;
double y;0.
Public Vector(double x, double y)
{
this.x = x;
this.y = y;
}
public Vector Move(double dx, double dy) => new Vector(x + dx, y +dy);
public void PrintIt() => Console.WriteLine(this);
public override string ToString() => string.Format(“x = {0}, y = {1}”, x, y);
메서드, 속성 및 인덱서 정의
5. 5
02
속성 정의에 람다 식을 사용하는 것도 가능하다!
당연하게도 set은 불가능, 외부 메서드를 수정한다는 것은 말이 안되죠
?
메서드, 속성 및 인덱서 정의
6. 6
02
인덱서 구문에서의 람다식 정의도 가능
생성자의 경우는 메서드지만 람다 식을 이용할 수는 없다.
생성자를 대리자로 만든다는게…이상하죠?
메서드, 속성 및 인덱서 정의
7. 7
03
예시로~!!!
Console.WriteLine 를 간략 해보겠습니다.
using System;
using static System.Console;
class Program
{
static void Main(string[] args)
{
WriteLine(“test”);
}
}
using static 구문을 이용한 타입명 생략
Using Namespace와 비슷한 기능!
8. 8
03
마찬가지로 enum 과 const상수 멤버에 대해서도 타입명 생략가능
Enum이나 const 멤버는 컴파일하면 모두 static 유형으로 다뤄진다.
왜냐면 상수니까?? 알아서 정적으로 만들어준다.
using static 구문을 이용한 타입명 생략
9. 9
03
확장 메서드의 경우는 using static 적용이 불가능!
확장 메서드는 인스턴스 메서드(객체 내부 메서드)로
호출되는데, 타입명을 명시하지 않으면
클래스 매서드(외부 객체 메서드)인지
인스턴스 메서드 인지 애매해진다.
using static 구문을 이용한 타입명 생략
10. 10
04
참조 변수 값이 null이라면 그대로 null을 반환하고 null이 아닐경우 지정
된 멤버를 호출한다.
list != null ? new int?(list.Count) : null -> list?.Count
대폭생략!
null 조건 연산자
Null값 확인을 위한 조건문을 시행할 필요가 없다.
11. 11
04
반드시 null값을 처리할 수 있는 타입을 사용해야한다.
null 조건 연산자
대신 ?? 연산자를 이용해 null을 값 형식으로 반환할 수 있다.
반환값이 없는 경우에도 사용가능
12. 12
05
자주사용하는 string.Format 메서드를 축약
string.Format(“이름: {0}, 나이:{1}”, Name, Age);
아래 코드로 줄일 수 있다.
$”이름: {Name}, 나이: {Age}”;
문자열 내에 포함된 식
13. 13
06
식별자 이름을 그대로 출력하고자 할때, 편리성을 주기위한 기능이다.
nameof 연산자
이 코드에서는 출력문의 name이 단지 문자열이기 때문에 오류가 발생하진 않는다
하지만, nameof를 사용하면 식별자로 사용할 수 있기 때문에, 식별자 이름과 다른지
알아낼 수 있다.
14. 14
07
Dictionary의 장점을 더욱 살려 직관적인 초기화 구문을 지원한다.
기존에 있던 키 값과 동일한 키 값을 가진 초기화 구문은 덮어쓰기 한
다.
Dictionary 타입의 인덱스 초기화
이전 버전 6.0 버전
15. 15
08
이전의 C#에서는 없었던 예외필터를 이용할 수 있게 되었다.
readAll Text에 지정한 파일이 없는 경우 FileNotFoundException 예외 핸들러
가 선택되어야하는데, 경로가 “temp”를 포함하는 경우에만 예외 처리를 한
다.
예외 필터
이미 많이 알려져있는 When구문.
16. 16
09
예외 처리 블록 내에서 비동기 호출을 처리할 수 있게 되었다.
Catch/finally 블록 내애서 await사용
wait를 catch/fianlly
내에서 사용가능하다.