[C#] 숨겨진 C# 보석 코드 (원문 링크, 설명)

본 글은 원문의 글(Hidden C# Gem Codes)을 나름의 해석으로 정리한 글입니다.

  1. 생성자 값 반환
    생성자의 반환은 생성하는 인스턴스이므로 특정 값을 반환할 수 없습니다. 정말요? out 매개변수 한정자를 사용하면 가능합니다. 별도의 public 속성으로 노출하고 싶지 않은 결과를 반환할 때 유용할 수 있습니다.

    var s = new ReturnableConstructor(out var bInit);
    Console.WriteLine(bInit);
    
    class ReturnableConstructor
    {
        public ReturnableConstructor(out bool bInit)
        {
            bInit = true;
        }
    }
    
  2. $"{item:크다;작다;같다}"
    item 값이 양수=“크다”, 음수=“작다”, 0="같다"로 치환해줍니다. 문자열 보간으로 표현되어서 언어 기능으로 보이지만 사실은 string.Format()의 기능입니다.

    string[] items = { "A", "B", "C", "D", "E", "F" };
    var target = "C";
    foreach (var item in items)
    {
        var result = $"{item.CompareTo(target):크다;작다;같다}";
        Console.WriteLine(result);
    }
    
  3. C# 11 Preview의 기능 - 목록 패턴 (feat. Sum())
    목록 패턴을 이용해 변수를 목록으로 취할 수 있으므로 Sum() LINQ 메서드도 사용할 수 있게 됩니다.

    int[] arr = { 4, 6, 2, 8, 10 };
    int result = arr switch
    {
       [] => 0,
       [_, int second] => second,
       [_, .. int[] middle, _] => middle.Sum(),
       _=>-1
    };
    Console.WriteLine(result); //16
    
  4. C# 11 Preview 기능 - 제네릭 특성 (feat. JSON)
    이제 제네릭 특성을 이용해 복잡한 설정을 JSON 문자열로 넘겨 객체화 할 수 있습니다.
    image

    원시 문자열 리터럴을 이용한다면 JSON 문자열을 좀 더 깔끔하게 표현할 수 있겠군요!


8개의 좋아요

이런게 있었다니 ㅋㅋ

1개의 좋아요