C# 최신 기능 소개
최근 C# 언어의 혁신적인 변화와 새로운 기능들을 살펴봅니다.
서론
C#은 마이크로소프트에서 개발한 현대적이고 혁신적인 오픈 소스 프로그래밍 언어로, 다양한 플랫폼에서 활용되고 있습니다. 최근 C#은 다양한 최신 기능들을 도입하며 개발자들의 관심을 끌고 있습니다.
1. 비동기 스트림 (Asynchronous Streams)
C# 8.0에서는 비동기 스트림이 도입되어, 비동기 메서드에서 데이터를 스트리밍 방식으로 처리할 수 있게 되었습니다. 이를 통해 대량의 데이터를 효율적으로 처리할 수 있습니다.
public async IAsyncEnumerable GenerateNumbersAsync()
{
for (int i = 0; i < 10; i++)
{
await Task.Delay(1000);
yield return i;
}
}
2. 널 병합 할당 연산자 (Null-coalescing Assignment)
C# 8.0에서는 널 병합 할당 연산자(`??=`)가 추가되어, 변수가 null일 경우에만 값을 할당하는 간결한 구문을 제공합니다.
int? number = null;
number ??= 5;
Console.WriteLine(number); // 출력: 5
3. 인덱스 및 범위 (Index and Range)
C# 8.0에서는 배열이나 컬렉션에서 인덱스와 범위를 지정하는 새로운 구문이 도입되었습니다. 이를 통해 코드의 가독성과 유지보수성이 향상되었습니다.
int[] numbers = { 0, 1, 2, 3, 4, 5 };
int lastNumber = numbers[^1]; // 마지막 요소
int[] subArray = numbers[1..4]; // 인덱스 1부터 3까지의 요소
4. 패턴 매칭 개선 (Pattern Matching Enhancements)
C# 9.0에서는 패턴 매칭 기능이 더욱 강화되어, 복잡한 조건문을 보다 간결하게 작성할 수 있게 되었습니다.
public string GetShapeInfo(object shape) => shape switch
{
Circle c => $"원: 반지름 = {c.Radius}",
Rectangle r => $"사각형: 너비 = {r.Width}, 높이 = {r.Height}",
_ => "알 수 없는 도형"
};
5. 레코드 타입 (Record Types)
C# 9.0에서는 레코드 타입이 도입되어, 불변 객체를 간편하게 생성할 수 있습니다. 이는 데이터 중심의 애플리케이션에서 특히 유용합니다.
public record Person(string FirstName, string LastName);
var person = new Person("홍길동", "김");
Console.WriteLine(person); // 출력: Person { FirstName = 홍길동, LastName = 김 }
6. 최상위 문 (Top-level Statements)
C# 9.0부터는 `Main` 메서드 없이도 프로그램의 진입점을 정의할 수 있는 최상위 문을 지원하여, 간단한 프로그램을 더욱 간결하게 작성할 수 있습니다.
using System;
Console.WriteLine("Hello, World!");
7. 글로벌 using 지시문 (Global using Directives)
C# 10.0에서는 글로벌 using 지시문을 통해, 프로젝트 전체에서 공통적으로 사용하는 네임스페이스를 한 곳에서 관리할 수 있습니다.
// GlobalUsings.cs 파일
global using System;
global using System.Collections.Generic;
결론
C#은 지속적으로 발전하고 있으며, 최신 기능을 활용하면 더 효율적인 프로그래밍이 가능합니다.
참조 링크
'C#' 카테고리의 다른 글
C# WPF 데이터 바인딩 심층 분석 및 고급 활용법 (0) | 2025.04.03 |
---|---|
WPF에서 다국어 지원(Localization) 구현하기 (0) | 2025.04.02 |
C#으로 간단한 계산기 만들기 | WPF 계산기 예제 (0) | 2025.03.31 |
C# WPF Command 패턴과 RelayCommand 사용법 (0) | 2025.03.30 |
C# Dependency Property(의존 속성)와 Attached Property (0) | 2025.03.29 |