C#을 처음 배울 때, 두 변수의 값을 서로 바꾸려면 보통 다음과 같이 작성했습니다.
int temp = a;
a = b;
b = temp;
하지만 C# 7.0부터는 이 과정을 단 한 줄로 처리할 수 있습니다.
(a, b) = (b, a);
왜 이렇게 되는 걸까요?
이 문법은 튜플 분해 할당(Tuple Deconstruction) 기능을 이용한 것입니다.
• (a, b)는 왼쪽에 위치한 변수 그룹
• (b, a)는 오른쪽에 위치한 값 그룹
이 둘을 한 쌍으로 묶어 한 번에 할당하기 때문에 가능한 문법입니다.
즉, (a, b) = (b, a); 는
1. 오른쪽의 (b, a) 튜플을 먼저 평가한 다음
2. 각각의 값을 왼쪽의 a, b에 동시에 할당하는 방식입니다.
이 구조 덕분에 temp 와 같은 임시 변수를 사용하지 않아도 두 값을 안전하게 교환할 수 있게 된 것입니다.
리스트 요소 간 교환도 가능합니다
이 문법은 단순한 변수뿐 아니라 리스트 요소에도 적용할 수 있습니다.
List<int> numbers = new List<int> { 5, 6, 4 };
(numbers[1], numbers[0]) = (numbers[0], numbers[1]);
이 코드는 numbers[0] 과 numbers[1] 의 값을 서로 바꾸는 예시입니다.
역시 한 줄로 간결하게 표현할 수 있고, 별도의 temp 변수도 필요하지 않습니다.
이 문법은 언제부터 가능했을까요?
해당 기능은 C# 7.0부터 지원되었습니다.
C# 7.0은 2017년 3월, Visual Studio 2017과 함께 정식 출시되었습니다.
이 버전부터 다양한 새로운 문법이 도입되었는데, 그중에서도 이 튜플 스왑 문법은 코드의 간결함을 크게 높여주는 기능으로 주목받고 있습니다.
IDE에서 알려주는 힌트
최근 Visual Studio나 JetBrains Rider와 같은 IDE에서는 기존의 스왑 방식으로 코드를 작성하면 다음과 같은 경고가 나타날 수 있습니다.
IDE0180: 'temp'를 사용한 전통적인 교환 방식 대신 튜플 기반 스왑을 사용하세요.
이는 튜플 문법을 사용하면 더 간결하고 안전하게 코드를 작성할 수 있다는 의미입니다.
이처럼 C#도 시간이 흐르면서 더 간결하고 읽기 쉬운 문법을 적극적으로 도입하고 있습니다.
튜플 분해 할당을 활용하면 스왑뿐 아니라 다양한 구조에서도 코드의 가독성과 효율성을 높일 수 있으니, 꼭 한 번 사용해 보시기를 권장드립니다.
'C#' 카테고리의 다른 글
정렬 알고리즘의 기초 2편 : 선택 정렬 (Selection Sort) (0) | 2025.05.04 |
---|---|
정렬 알고리즘의 기초 1편 : 버블 정렬 (Bubble Sort) (0) | 2025.05.04 |
하드코딩으로 구현한 간단한 퀘스트 분기 처리 (0) | 2025.05.02 |
Dictionary 를 배열처럼 접근할 때 주의사항 (0) | 2025.05.02 |
Parsing과 TryParse() 계열 함수들 (0) | 2025.04.30 |