C#을 탐색하기 시작하거나 지식을 확장하기로 결정했다면 이러한 유용한 언어 기능을 배워야 합니다. 그렇게 하면 코드를 단순화하고 오류를 방지하며 많은 시간을 절약할 수 있습니다.
1) async/await
async/await-pattern을 사용하면 차단 작업 수행 시 UI/현재 스레드 차단을 해제할 수 있습니다. 비동기/대기 패턴은 웹 요청과 같은 실행이 차단되는 경우에도 코드가 계속 실행되도록 허용하여 작동합니다.
2) 객체/배열/컬렉션 초기화
객체, 배열, 컬렉션 초기화를 사용하여 클래스, 배열, 컬렉션을 쉽게 생성 예:
//일부 데모 클래스 publicclassEmployee{ publicstringName { get; set;} publicDateTime StartDate { get; set;}} //직원 생성을 위해 초기화 emp = newEmployee {Name= "John Smith", StartDate=DateTime.Now()};
위의 예는 단위 테스트에만 유용하지만 다른 컨텍스트에서도 사용해야 합니다. 생성자를 사용하여 생성해야 합니다.
3) 람다, 조건자, 대리자 및 클로저
많은 경우(예: Linq를 사용하는 경우) 이러한 기능이 실제로 필요합니다. 언제, 어떻게 사용하는지 알아보세요.
4)??(null 병합 연산자)
?? – 이 경우 연산자는 왼쪽을 반환합니다. 오른쪽:
// null일 수 있음 varsomeValue = service.GetValue() vardefaultValue = 23 // someValue가 null이면 결과는 23입니다. ?? defaultValue ;
?? – 연산자를 연결할 수 있습니다:
stringanybody = parm1 ?? globalDefault;
null 허용 유형을 null 허용이 아닌 유형으로 변환하는 데 사용할 수 있습니다.
vartotalPurchased = BuyQuantities.Sum(kvp => kvp.Value ?? 0)
5) $"{x}" (문자열 보간) ——C#6
C용입니다. #6 효율적이고 우아한 방식으로 문자열을 조합할 수 있는 새로운 기능:
//기존 메서드 varsomeString = String.Format( "일부 데이터: {0} , 추가 데이터: {1}", someVariable, someOtherVariable); //새 메서드 varsomeString = $"일부 데이터: {someVariable}, 추가 데이터: {someOtherVariable}";
중괄호 사이에 C# 표현식을 넣으면 문자열 보간이 매우 강력해집니다.
6)?.(Null 조건 연산자) - C#6
null 조건 연산자는 다음과 같이 작동합니다.
//Null ifcustomer 또는customer.profile 또는customer.profile.age isnullvar currentAge = customer?.profile?.age;
업데이트 없음 NullReferenceException이 많습니다!
7) nameof Expression - C#6
새로운 nameof-expression은 중요해 보이지 않을 수도 있지만 실제로는 그 가치가 있습니다. ReSharper와 같은 자동 리팩토링 도구를 사용할 때 때때로 이름으로 메서드 매개변수를 참조해야 할 수 있습니다.
publicvoid PrintUserName( UsercurrentUser){ //리팩토링 도구에서 다음에 대한 텍스트 참조가 누락될 수 있습니다. 이름을 바꾸는 경우 아래의 현재 사용자 if(currentUser == null) _logger.Error( "currentUser 인수가 제공되지 않았습니다.") //...}
당신 이렇게 사용해야 합니다...
publicvoidPrintUserName(User currentUser){ //리팩토링 도구는 이것을 놓치지 않습니다...if(currentUser == null) _logger . Error( $"Argument {nameof(currentUser)} is not available"); //...} 8) 속성 초기화 - C#6
속성 초기화를 사용하면 속성의 초기 값을 선언하려면:
publicclassUser{ publicGuidId{ get; } = Guid.NewGuid() // ...}
속성 이니셜라이저를 사용하면 컬렉션을 선언할 수 없다는 장점이 있습니다. 따라서 속성을 변경할 수 없게 됩니다. 속성 이니셜라이저는 C#6 기본 생성자 구문에서 작동합니다.
9) as 및 is 연산자
is 연산자는 인스턴스가 특정 유형인지 여부를 제어하는 데 사용됩니다. , 예를 들어 변환이 가능한지 확인하려는 경우:
if( PersonisAdult){ //do stuff}
인스턴스를 클래스로 변환하려면 as 연산자를 사용하세요. 변환할 수 없으면 null을 반환합니다:
SomeType y = x asSomeType; if(y != null){ //do stuff} 10) Yield 키워드
Yield 키워드를 사용하면 항목이 있는 IEnumerable 인터페이스를 제공할 수 있습니다. 다음 예에서는 2에서 8까지의 2의 거듭제곱(예: 2,4,8,16,32,64,128,256)을 반환합니다.
publicstaticIEnumerable Power( intnumber, intexComponent){ intresult = 1; for( inti = 0; i < expont; i++) { result = result * number; Yieldreturnresult; 올바른 방법으로 사용하면 매우 강력합니다. 이를 통해 개체 컬렉션을 느리게 생성할 수 있습니다. 즉, 시스템은 전체 컬렉션을 열거할 필요가 없으며 요청 시 수행합니다.
꼭 배우고 사용해야 할 C#의 10가지 함수와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!