12.0 · 버전 이력

C# 12.0

형식을 세우고 값을 늘어놓는 일이 짧아졌습니다.

2023.11 .NET 8
한눈에

무엇이 더해졌나

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부 객체지향에서 다룹니다.

배경
  • 이 판이 겨눈 것은 같은 일을 한 가지 모양으로 적게 하는 것입니다.
  • 컬렉션 식은 컬렉션마다 달랐던 표기를 하나로 모았습니다.
  • 기본 생성자는 옮겨 담기만 하던 코드를 없앴습니다.