C # 6의 새로운 기능
C # 6에서 새로운 C # 컴파일러가있다. 그것은 완전한 소스 코드를 정리합니다. 사용자 정의 프로그램은 이제 컴파일러 파이프 라인의 특성을 사용하고, 비주얼 스튜디오의 많은 기능을 사용할 수 있습니다.
이 새로운 플랫폼은 많은 새로운 기능과 C # 컴파일러 개선의 C #을 수 있습니다. 이러한 기능은 키워드 LINQ 또는 큰 영향 비동기 아니지만, 많은 개선은 개발자의 생산성을 증가 있지만. C # 6 어떻게 바뀌 었습니까?
0.3.1 정적 사용하여 문
C # 5
using System;
Console.WriteLine("Hello,World!");
C # 6
using static System.Console;
WirteLine("Hello,World!");
0.3.2 식 본체 방법
신체 표현 방법에만 문 람다 구문을 사용하여 작성할 수 있습니다 포함 :
C # 5
public bool IsSquare(int num)
{
return num == 0;
}
C # 6
public bool IsSquare(int num) => num == 0;
0.3.3 표현식 본체 속성
이 방법은 이들에만 단방향 재산권 접근 람다 구문 기록 생길 수 표현과 유사하다 :
C # 5
public string FullName
{
get
{
return FirstName + " " + LastName;
}
}
C # 6
public string FullName => FirstName + " " + LastName;
0.3.4 자동으로 속성 초기화
C # 5
public class Person
{
public Person()
{
Age = 24;
}
public int Age {get; set;}
}
C # 6
public class Person
{
public int Age {get; set;} = 42;
}
0.3.5 자동 읽기 전용 속성
읽기 전용 특성을 달성하기 위해, C # 5 전체 특성 구문 필요하며 C # 6에서, 특성이 자동적으로 사용할 수있다 :
C # 5
private readonly int _bookId;
public int BookId {
get
{
return _bookId;
}
}
C # 6
public int BookIdTest { get; }
0.3.6 nameof 연산자
새로운 오퍼레이터 Nameof 필드 이름, 속성 명, 형명 또는 방법 이름을 액세스 할 수있다. 따라서, 재건, 그것은 누락의 이름을 변경하지 않을 것이다 :
C # 5
public void Method(object o)
{
if (o == null) throw new System.ArgumentNullException("o");
}
C # 6
public void MethodTest(object o)
{
if (o == null) throw new System.ArgumentNullException(nameof(o));
}
0.3.7 널 전파 연산자
널 전파 통신을 단순화 검사 널 (null) 값 :
C # 5
int? age = p = null ? null : p.Age;
C # 6
int? age = p?.Age;
C # 5
var handler = Event;
if(handler != null)
{
handler(source,e)
}
C # 6
handler?.Invoke(source,e)
0.3.8 문자열 보간
문자열 보간 문자열 형식 번호 자리에서 사용되지 및 String.format를 호출, 삭제, 자리는 표현을 포함 할 수 있습니다 :
C # 5
public override ToString()
{
return string.Format("{0},{1}",Title,Publisher)
}
C # 6
public override ToString() => #"{Title} {Publisher}"
0.3.9 사전 초기화
사전은 이제 컬렉션 이니셜 라이저와 비슷한, 초기화 초기화 할 수 있습니다.
C # 5
var dict = new Dictionary<int,string>();
dict.Add(3,"three");
dict.Add(7,"seven");
C # 6
var dict = new Dictionary<int,string>()
{
[3] = "three",
[7] = "seven"
};
0.3.10 예외 필터
그들은 예외를 잡기 전에 이상 필터는 필터를 할 수 있습니다.
C # 5
try
{
}
catch(MyException ex)
{
if(ex.ErrorCode != 405) throw;
}
C # 6
try
{
}
catch(MyException ex) when (ex.ErrorCode == 405)
{
}
새로운 구문의 한 장점은 부호의 길이를 감소하는 것이 아니라, 그리고 스택 추적을 바꿀 스택 트레이스의 변화 ---- C # 5는 없다.
0.3.11 잡아라 AWAIT
C # 5
bool hasError = false;
string errorMessage = null;
try
{
}
catch (System.Exception ex)
{
hasError = true;
errorMessage = ex.Message;
}
if (hasError)
{
await new MessageDialog().ShowAsync(errorMessage);
}
C # 6
try
{
}
catch (System.Exception ex)
{
await new MessageDialog().ShowAsync(errorMessage);
}