12.0 · 버전 이력
C# 12.0
형식을 세우고 값을 늘어놓는 일이 짧아졌습니다.
한눈에
무엇이 더해졌나
C# 12.0은 .NET 8과 함께 2023년 11월에 나왔습니다. 형식을 세우고 값을 늘어놓는 일이 짧아진 판입니다.
- 컬렉션 식 — 대괄호 하나로 값을 늘어놓습니다.
- 기본 생성자 — 클래스 이름 옆에 받을 것을 적습니다.
- 별칭 확장 — 긴 형식에 짧은 이름을 붙입니다.
컬렉션 식
대괄호 하나로 늘어놓기
값을 늘어놓아 채우는 방법이 담을 컬렉션마다 조금씩 달랐습니다. 배열은 이렇게, 리스트는 저렇게 적어야 했고, 컬렉션을 바꾸면 적는 모양도 바꿔야 했습니다. 이제는 어느 컬렉션이든 대괄호입니다.
C# 11 까지
int[] a = new int[] { 1, 2, 3 }; List<int> b = new List<int> { 1, 2, 3 };
C# 12 부터
int[] a = [1, 2, 3]; List<int> b = [1, 2, 3];
두 점을 앞에 붙이면 다른 것을 펼쳐 담을 수도 있습니다.
int[] head = [1, 2]; int[] all = [..head, 3, 4]; // 1, 2, 3, 4
C# 1.7 배열과 컬렉션 기초 에서 배열과 리스트를 다룹니다.
그 밖에
기본 생성자
밖에서 받은 것을 필드에 옮겨 담기만 하는 생성자가 대부분이었습니다. 받을 것을 클래스 이름 옆에 적으면 그 일이 사라집니다.
C# 11 까지
class Greeter { private readonly string _name; public Greeter(string name) { _name = name; } public void Say() => Console.WriteLine(_name); }
C# 12 부터
class Greeter(string name) { public void Say() => Console.WriteLine(name); }
record 에는 C# 9.0부터 있던 것인데, 보통의 클래스와 구조체에도 열린 것이 이 판입니다. 클래스 자체는 2부 객체지향에서 다룹니다.
배경
- 이 판이 겨눈 것은 같은 일을 한 가지 모양으로 적게 하는 것입니다.
- 컬렉션 식은 컬렉션마다 달랐던 표기를 하나로 모았습니다.
- 기본 생성자는 옮겨 담기만 하던 코드를 없앴습니다.