C# 11이 출시됩니다! 당신의 마음을 사로잡을 5가지 기능 🤯

Microsoft는 최근 C# 10 및 .NET 6을 전 세계에 출시했지만 아직 완료되지 않았습니다. .NET 팀은 이미 C# 11 및 .NET 7에 포함될 기능에 대한 작업을 시작했습니다. 이 문서에서는 코딩 방식을 완전히 바꿔 놓을 몇 가지 향후 기능C# 11 features을 살펴보겠습니다!


보간된 체인의 "구멍"



C# 11이 가져올 이 새로운 기능을 소개하려면 C#이 현재 두 가지 유형의 intepolated strings:
  • 그대로 보간: $@""
  • 축어적이지 않은 보간: $""

  • 여기서 주요 차이점은 그대로 보간된 문자열은 텍스트 세그먼트에 새로운 코드 행을 포함할 수 있고 적절한 인용 부호만 이스케이프할 수 있다는 것입니다" ".

    이는 축어적이지 않은 보간 문자열에서는 발생하지 않습니다. 이 경우 이스케이프 문자(예: /r/n )가 사용됩니다.

    "구멍"을 언급할 때 I - 및 Microsoft - 는 보간식을 의미합니다.

    이 모든 것은 비축어적 보간 문자열의 모든 "구멍"에 영향을 미쳤습니다(여전히 영향을 미칩니다). 이러한 구멍은 실제로 텍스트가 아니므로 이스케이프 규칙의 영향을 받지 않아야 합니다.

    C# 11로 수행할 수 있는 작업Microsoft's example을 살펴보겠습니다. 이제 C# 10에서는 오류가 발생하기 때문에 불가능합니다.

    var v = $"Count ist: { this.Is.Really.Something()
                                .That.I.Should(
                                    be + able)[
                                        to.Wrap()] }.";
    



    패턴 나열



    여기에 또 다른 새로운 기능이 있습니다. 바로 새로운 목록 패턴입니다. C#11에서 할 수 있는 것은 배열 및 목록과 비교하여 다른 요소를 일치시키거나 0개 이상의 요소와 일치하는 절단 패턴을 포함하는 것입니다.

    예를 들어 슬라이스 패턴은 슬라이스의 내용을 캡처하기 위해 var 패턴과 같은 다른 목록 패턴 뒤에 갈 수 있습니다.

    Microsoft의 예를 살펴보겠습니다.

    The pattern [1, 2, .., 10] matches all of the following:



    int[] arr1 = { 1, 2, 10 };
    int[] arr1 = { 1, 2, 5, 10 };
    int[] arr1 = { 1, 2, 5, 6, 7, 8, 9, 10 };
    


    To explore list patterns consider:



    public static int CheckSwitch(int[] values)
        => values switch
        {
            [1, 2, .., 10] => 1,
            [1, 2] => 2,
            [1, _] => 3,
            [1, ..] => 4,
            [..] => 50
        };
    


    Early peek at C# 11 features.에서 자세한 예를 볼 수 있습니다.


    매개변수 Null 확인



    이 새로운 기능은 이미 알고 있듯이 메소드 인수가 null인지 확인하기 위해 상용구 코드의 변형을 사용하는 것이 일반적입니다. 예를 들면 다음과 같습니다.

    public static void M(string s)
    {
        if (s is null)
        {
            throw new ArgumentNullException(nameof(s));
        }
        // Body of the method
    }
    


    이제 null 매개변수를 확인하려는 의도를 !!로 축약할 수 있습니다.

    public static void M(string s!!)
    {
        // Body of the method
    }
    


    이는 getset를 사용하여 인덱서 매개변수를 확인하는 데에도 사용할 수 있습니다.

    public string this[string key!!] { get { ... } set { ... } }
    



    생성자



    이 기능에는 few small changes이 있습니다. 언제든지 !! null 유효성 검사 구문을 사용하여 명시적 null 확인 변경이 수행되면 해당 유효성 검사는 필드 이니셜라이저 이후에 발생합니다. 그 전에 매개 변수 null 검사 구문을 사용하는 null 검사가 수행됩니다.


    Nullable 참조 유형과의 상호 작용



    앞에서 본 !! 연산자를 매개변수 이름에 적용하면 null이 허용되는 상태에서 null이 아닌 것으로 시작합니다. 확인하자Microsoft example:

    void WarnCase<T>(
        string? name!!,     // CS8995   Nullable type 'string?' is null-checked and will throw if null. 
        T value1!!        // Okay
    )
    


    보시다시피 컴파일러는 매개변수의 구문이 명시적으로 null을 허용하는 유형과 함께 사용되는 경우!! 경고를 표시합니다.


    C# 11 결론



    불과 몇 달 전(작년 11월)에 Microsoft가 공식적으로 .NET 6 및 C# 10을 출시했기 때문에 C# 11의 새로운 기능과 기능이 많고 대부분이 완전히 활용되지 않았으므로 앞으로 그리 멀지 않은 미래에 마이크로소프트가 그들에 대해 깊이 있게 이야기할 때까지 기다리는 것입니다.


    이 기사가 마음에 드셨다면 FOLLOW US를 잊지 마세요. 그래야 .NET의 새로운 소식을 가장 먼저 읽을 수 있습니다.

    좋은 웹페이지 즐겨찾기