C# 10의 새로운 기능은 무엇입니까? Git에서 변경 사항을 다른 분기로 이동하는 방법 로컬 네트워크에서 자체 DNS 서버를 실행하는 방법 컨테이너를 시작하지 않고 Docker 이미지의 콘텐츠를 검사하는 방법 DevSpace를 시작하고 Kubernetes 앱을 빠르게 개발하는 방법 Kubectl로 Kubernetes 포드를 다시 시작하는 방법 방법 Github 리포지토리를 SSH 인증으로 전환하려면

0
333
노트북 사진의 C# 텍스트 오버레이 그림
마리아 보노나/Shutterstock.com

C# 10은 Visual Studio 2022 및 .NET 6과 함께 2021년 11월에 릴리스되었습니다. 더 쉽고 편리하게 작업할 수 있는 몇 가지 새로운 기능이 추가되었습니다. 다음은 가장 유용한 몇 가지 추가 사항과 이러한 추가 기능이 워크플로를 향상시키는 방법입니다.

파일 범위 네임스페이스

가장 간단하지만 아마도 가장 중요한 변경 사항 중 하나부터 시작하겠습니다. 이제 새로운 구문 옵션을 통해 전체 파일에 네임스페이스를 적용할 수 있습니다. namespace 예어. 파일 내부의 나머지 코드는 들여쓰기되지 않은 경우에도 자동으로 네임스페이스가 지정됩니다. namespace 블록. 이것은 PHP의 네임스페이스 선언과 유사하게 작동합니다.

C# 9에서 클래스의 네임스페이스를 지정하려면 다음 코드가 필요했습니다.

namespace Demo {
 
    public class Example {
    }
 
}

C# 10에서는 다음을 대신 사용할 수 있습니다.

namespace Demo;
 
public class Example {
}

이렇게 하면 들여쓰기 수준을 제거하여 편집기에서 수평 공간을 절약할 수 있습니다. 파일에 여러 클래스가 포함되어야 하는 경우 열 0부터 시작하여 모두 작성할 수 있습니다. namespace 선언은 전체 파일에 적용됩니다.

글로벌 사용

일부 네임스페이스는 프로젝트 전체에서 매우 광범위하게 사용됩니다. 그러나 여전히 각 파일에 수동으로 포함해야 합니다. using 성명.

광고

C# 10은 이를 지원하도록 변경합니다. global using 변종. 이렇게 하면 프로젝트의 모든 파일에서 참조된 네임스페이스에 액세스할 수 있습니다.

global using System;

컴파일에 포함될 모든 파일에 전역 사용을 추가할 수 있습니다. 그들은 표준의 모든 기능을 지원합니다 using 를 포함한 진술 static 키워드 및 별칭 지정 =.

전역 사용을 채택하면 작성하는 줄 수를 줄일 수 있지만 이름 충돌 가능성이 거의 없는 일반적으로 참조되는 네임스페이스를 위해 남겨두는 것이 가장 좋습니다. 에 의존한다는 점을 주의하십시오. global using 새로운 기여자가 어떻게 네임스페이스 리소스가 포함되었는지 즉시 깨닫지 못할 수 있으므로 코드가 더 불투명해질 수 있습니다.

전역 사용의 동반 기능은 암시적 사용입니다. 이것은 자동으로 생성 global using 프로젝트 유형에 적합한 문. 이 기능은 .NET 6 프로젝트 템플릿에서 기본적으로 켜져 있습니다. 로 비활성화할 수 있습니다. ImplicitUsings 당신의 설정 .csproj 파일.

개선된 구조

Structs는 클래스와 더 긴밀한 동등성을 가져오는 몇 가지 개선 사항을 받았습니다. 여기에는 매개변수가 없는 생성자, 필드 이니셜라이저, with 표현식 및 레코드 구조 생성 옵션:

public record Point(int X, int Y);

이 예제는 “위치” 레코드 구조체를 생성합니다. X 그리고 Y 생성자 매개변수는 암시적 공개 멤버가 됩니다. 기존 구문을 사용하여 수동으로 멤버를 정의할 수도 있습니다.

public record struct Point {
    public int X { get; init; }
    public int Y { get; init; }
}
광고

레코드 구조체는 사용자 지정 동작을 클래스 메서드로 연결하지 않고 일부 데이터를 캡슐화해야 하는 시나리오에서 사용해야 합니다. 레코드 구조체는 다음과 같은 통합된 값 평등 검사 및 기능을 제공합니다. ToString(). 를 통해 변경 가능하거나 변경 불가능할 수 있습니다. readonly 예어.

람다 식 개선 사항

C# 10은 형식과 구문을 다루는 람다 식에 대한 몇 가지 개선 사항을 추가합니다. 목표는 람다를 일반 메서드 및 로컬 함수와 더 유사하게 만드는 것입니다. 이제 하나를 정의하는 것이 더 친숙한 경험이 될 것입니다.

“내츄럴” 유형의 개념이 도입되었습니다. 이를 통해 컴파일러는 수동으로 대리자 또는 식으로 변환하지 않고도 람다의 형식을 유추할 수 있습니다. 이렇게 하면 변수에 람다를 할당할 때 더 읽기 쉬운 코드가 생성됩니다.

// C# 9
Func<string, int> toInt = (string s) => int.Parse(s);
 
// C# 10
var toInt = (string s) => int.Parse(s)

컴파일러는 다음 유형을 유추합니다. toInt 같이 Func<string, int> Visual Studio에서 코드를 볼 때 표시됩니다. 추론은 다음을 사용할 것입니다. Func, Action, 또는 합성 대리자.

자연 유형은 람다 식이 이미 완전히 입력된 경우에만 작동합니다. 매개변수 유형을 생략하면 컴파일러에서 호환되는 유형 정의를 만들 수 없습니다.

관련 변경 사항은 명시적 반환 유형에 대한 지원입니다. 일반 함수와 마찬가지로 반환 유형은 람다의 매개변수 목록보다 먼저 옵니다.

var toInt = int (string s) => int.Parse(s)

마지막으로, 람다는 이제 메서드 및 함수와 같은 방식으로 속성을 사용할 수 있습니다. 반환 유형 및 매개 변수 목록 앞의 람다 식 시작 부분에 위치합니다. 속성을 사용하여 추가 메타데이터를 람다에 연결하여 더 나은 내성 및 코드 분석을 용이하게 할 수 있습니다.

var toInt = [DemoAttribute()] int (string s) => int.Parse(s)

다재다능한 분해 과제

분해 할당은 이제 새 변수를 초기화하고 같은 줄에 있는 기존 변수에 값을 할당할 수 있습니다. 이전에는 이러한 작업에 대해 별도의 분해를 사용해야 했습니다.

광고

C# 9에서는 다음과 같은 코드가 생성되었습니다.

int x = 0;
int y = 0;
(x, y) = point;
 
(int z) = point;

반면 C# 10에서는 다음을 수행할 수 있습니다.

int x = 0;
int y = 0;
(x, y, int z) = point;

지금 x, y, 그리고 z 모두 단일 분해 할당을 사용하여 값으로 초기화되어 코드의 반복을 줄입니다.

기타 변경 사항

문자열 보간이 개선되었으며 이제 상수 문자열에서도 작동합니다. 보간 중에 자리 표시자 구멍을 채우는 데 사용되는 모든 문자열이 그 자체가 상수 값인지 확인해야 합니다. 보다 광범위하게, 보간 프로세스에 대한 최적화는 전용 핸들러를 사용하여 메모리 사용을 줄이고 성능을 향상시킬 수 있습니다.

속성 패턴은 중첩 속성에 대한 읽기 쉬운 액세스를 제공하기 위해 단순화되었습니다. 이제 여러 계층의 괄호 대신 점 구문을 사용하여 중첩 속성 값에 액세스할 수 있습니다.

// C# 9
{ Train: {ArrivalTime: "10:00"} }
 
// C# 10
{ Train.ArrivalTime: "10:00" }

다른 곳에서는 컴파일러 최적화를 통해 확정 할당 및 null-state 검사 동안 오탐을 줄이는 이점을 얻을 수 있습니다. 컴파일 시간에 가짜 경고를 유발하는 여러 C# 9 문제가 해결되어 실제로 중요한 문제를 디버그하는 데 도움이 되는 보다 정확한 검사가 가능해졌습니다. 문제는 부울 상수에 대한 null 병합 표현식 및 변수 비교 사용과 연결되었습니다.

결론

C# 10에는 개발을 보다 간단하게 만드는 데 도움이 되는 몇 가지 새로운 기능이 추가되었습니다. 그러나 다음을 포함한 많은 다른 새로운 기능 field 키워드 및 필수 속성이 다음 주요 릴리스로 다시 푸시되었습니다. 인터페이스에 대한 일반 속성 및 정적 추상 멤버는 10으로 만들었지만 미리보기 태그는 여전히 첨부되어 있습니다.

광고

Visual Studio 2022를 다운로드하여 지금 C# 10 사용을 시작할 수 있습니다. 이 언어는 Windows, Mac 및 Linux에서 작동하는 독립 실행형 .NET 6 SDK의 일부로도 사용할 수 있습니다.