10.0 · 버전 이력

C# 10.0

파일 머리에 되풀이되던 것들이 사라졌습니다.

2021.11 .NET 6
한눈에

무엇이 더해졌나

C# 10.0은 .NET 6과 함께 2021년 11월에 나왔습니다. 앞선 9.0이 프로그램의 시작 자리를 가볍게 했다면, 이 판은 파일 머리에서 되풀이되던 것들을 걷어냅니다.

  • global using — 한 번 적어 프로젝트 전체에서 씁니다.
  • 파일 범위 네임스페이스 — 중괄호로 감싸지 않아 들여쓰기가 한 단계 줄어듭니다.
  • record struct — 값 형식으로 된 record 입니다.
global using

using 을 파일마다 적지 않아도 됩니다

System 이나 System.Collections.Generic 처럼 거의 모든 파일이 쓰는 것들이 있습니다. 그때까지는 파일을 새로 만들 때마다 같은 줄을 다시 적어야 했습니다. global 을 붙이면 한 번만 적어도 프로젝트 전체에 걸립니다.

// 아무 파일에나 한 번 적어 두면 됩니다
global using System;
global using System.Collections.Generic;

.NET 6부터 프로젝트 설정에 ImplicitUsings 가 켜져 나오는데, 이것이 켜져 있으면 자주 쓰는 묶음을 빌드가 알아서 넣어 줍니다. 새 콘솔 프로젝트에서 using 을 한 줄도 적지 않았는데 Console 이 그냥 쓰이는 것이 그 때문입니다.

C# 1.2 Hello World와 프로그램 구조 에서 자세히 다룹니다.

파일 범위 네임스페이스

들여쓰기 한 단계 줄이기

네임스페이스는 거의 언제나 파일 하나에 하나뿐인데, 그것을 위해 파일 전체가 중괄호 안으로 들어가 한 단계씩 밀려 있었습니다. 세미콜론으로 끝내면 그 단계가 사라집니다.

C# 9 까지
namespace MyApp {
    class Program {
        static void Main() {
            Console.WriteLine("Hello");
        }
    }
}
C# 10 부터
namespace MyApp;

class Program {
    static void Main() {
        Console.WriteLine("Hello");
    }
}

한 파일에 네임스페이스가 둘 이상 필요하다면 예전 방식(중괄호)을 그대로 쓰면 됩니다. 두 방식을 한 파일에 섞을 수는 없습니다.

배경
  • 이 판이 겨눈 것은 파일 머리를 비우는 것입니다.
  • 덕분에 새 파일을 열었을 때 맨 위에 보이는 것이 곧 할 일이 되었습니다.
  • 오래된 코드에서 중괄호로 감싼 네임스페이스를 만나더라도 잘못된 것이 아닙니다.