본 글은 원문의 글(Hidden C# Gem Codes)을 나름의 해석으로 정리한 글입니다.
-
생성자 값 반환
생성자의 반환은 생성하는 인스턴스이므로 특정 값을 반환할 수 없습니다. 정말요?out
매개변수 한정자를 사용하면 가능합니다. 별도의public
속성으로 노출하고 싶지 않은 결과를 반환할 때 유용할 수 있습니다.var s = new ReturnableConstructor(out var bInit); Console.WriteLine(bInit); class ReturnableConstructor { public ReturnableConstructor(out bool bInit) { bInit = true; } }
-
$"{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); }
-
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
-
C# 11 Preview 기능 - 제네릭 특성 (feat. JSON)
이제 제네릭 특성을 이용해 복잡한 설정을 JSON 문자열로 넘겨 객체화 할 수 있습니다.
원시 문자열 리터럴을 이용한다면 JSON 문자열을 좀 더 깔끔하게 표현할 수 있겠군요!