C # 6의 새로운 기능

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);
}
게시 62 개 원래 기사 · 원 찬양 5 · 조회수 3935

추천

출처blog.csdn.net/qq_42194657/article/details/102917962