C# 12.0 새 기능 총정리: C# 9.0과 비교한 차이점과 실무 활용 예제
by Sugar0810C# 12.0, 현업 프로젝트에서 만난 변화들
주로 Unity로 개발해왔기 때문에 오랫동안 C# 9.0 환경에서 머물러 있었습니다. 하지만 최근 ASP.NET Core 9.0 프로젝트를 학습하면서 자연스럽게 C# 12.0의 문법들을 접하게 되었고, 실제 현업 프로젝트에서 어떻게 활용되는지 살펴보게 되었습니다.
이번 글에서는 실제로 사용된 기능과 사용하지 않았지만 알아두면 좋은 기능을 함께 정리해보겠습니다.
현업에서 실제 사용된 C# 12.0 기능
1. Collection Expressions ([])
가장 많이 체감한 변화는 바로 빈 배열 초기화 문법입니다.
C# 9.0까지는 보통 이렇게 작성했죠:
public string[] Items { get; set; } = new string[0];
// 또는
public string[] Items { get; set; } = Array.Empty<string>();
C# 12.0에서는 훨씬 간단하게 표현할 수 있습니다:
public string[] Items { get; set; } = [];
→ 코드가 확연히 간결해지고, 가독성도 좋아졌습니다.
2. Collection Types with Natural Syntax
배열이나 리스트 초기화에도 [] 문법을 적극 활용할 수 있습니다.
Vector = point.Vectors?.Vector?.Data?.ToArray() ?? [];
예전 같으면 ?? Array.Empty<float>()를 사용해야 했는데, 이제는 []만 쓰면 되니 일관성이 생겼습니다.
사용하지 않았지만 알아두면 좋은 C# 12.0 기능들
1. Primary Constructors
클래스/구조체 선언과 동시에 생성자를 간결하게 정의할 수 있습니다.
C# 12.0:
public class User(string name, int age)
{
public string Name { get; } = name;
public int Age { get; } = age;
}
C# 9.0 방식:
public class User
{
public string Name { get; }
public int Age { get; }
public User(string name, int age)
{
Name = name;
Age = age;
}
}
→ 프로젝트에서는 여전히 전통적인 방식으로 생성자를 작성했지만, 데이터 모델링이 단순하다면 Primary Constructor가 훨씬 깔끔합니다.
2. Default Lambda Parameters
람다식에 기본 매개변수를 지정할 수 있습니다.
C# 12.0:
Func<int, int, int> add = (a, b = 10) => a + b;
Console.WriteLine(add(5)); // 15
C# 9.0에서는 불가능했기 때문에 오버로드나 별도의 메서드가 필요했습니다.
→ 프로젝트에서는 활용하지 않았지만, 헬퍼 함수 작성할 때 매우 유용할 수 있습니다.
3. Inline Arrays (unsafe struct)
성능 최적화가 필요한 경우, 고정 길이 배열을 구조체 안에 직접 정의할 수 있습니다.
unsafe struct FixedBuffer
{
public fixed int Values[16];
}
→ 프로젝트에서는 사용되지 않았지만, 성능이 중요한 고성능 연산 (예: 게임 엔진, 시뮬레이션, 네이티브 연동) 에서 고려할 수 있는 기능입니다.
4. Ref Readonly Parameters
함수 인자에 ref readonly를 붙여서, 값 복사를 막으면서도 불변성을 보장할 수 있습니다.
public void PrintLength(ref readonly string text)
{
Console.WriteLine(text.Length);
}
→ 구조체 같은 값 타입이 무겁고, 참조는 허용하지만 변경은 막고 싶은 경우에 적합합니다.
'⚙️ Programming > C# & Unity' 카테고리의 다른 글
| [Unity] Unity MCP와 Claude 연동 튜토리얼: AI로 Unity 개발 자동화하기(Cursor, Copilot 포함) (6) | 2025.08.22 |
|---|---|
| [Unity] 6.2버전에 통합된 Unity AI를 알아보자 (0) | 2025.08.21 |
| 2024 UDay Seoul: Industry | 향상된 웹 경험의 시작: Unity 6와 함께! (7) | 2024.10.07 |
| 2024 UDay Seoul: Industry | Industry Vision & Roadmap Review (7) | 2024.10.06 |
| Unity 6 Web의 최적화 기법과 WebGL 활용 - 차세대 웹 애플리케이션의 가능성 (1) | 2024.10.02 |
블로그의 정보
Sugar
Sugar0810