C#에서 임시 변수(temp variable)를 사용하지 않고 두 문자열을 서로 교환하려면 문자열 연결과 Substring() 메서드를 활용하면 됩니다. 이 글에서는 그 원리와 구현 방법을 단계별로 살펴보겠습니다.
교환 로직의 핵심 원리
이 방법은 크게 세 단계로 이루어집니다. 먼저 첫 번째 문자열에 두 번째 문자열을 이어 붙여 하나로 만든 뒤, Substring() 메서드로 각 문자열을 다시 분리해 내는 방식입니다.
1단계: 두 문자열을 하나로 연결
첫 번째 문자열(str1) 뒤에 두 번째 문자열(str2)을 붙입니다. 예를 들어 "Brad"와 "Pitt"이 연결되어 "BradPitt"이 됩니다.
str1 = str1 + str2;
2단계: str2에 원래의 str1 값 저장
연결된 문자열 전체 길이에서 두 번째 문자열의 길이를 뺀 만큼 앞부분을 잘라내면, 원래의 str1 값을 얻을 수 있습니다.
str2 = str1.Substring(0, str1.Length - str2.Length);
3단계: str1에 원래의 str2 값 저장
마지막으로, 연결된 문자열에서 현재 str2의 길이만큼 건너뛴 나머지 부분을 str1에 할당하면 원래의 str2 값이 됩니다.
str1 = str1.Substring(str2.Length);
전체 예제 코드
using System;
class Demo {
public static void Main(String[] args) {
String str1 = "Brad";
String str2 = "Pitt";
Console.WriteLine("Strings before swap");
Console.WriteLine(str1);
Console.WriteLine(str2);
str1 = str1 + str2;
str2 = str1.Substring(0, str1.Length - str2.Length);
str1 = str1.Substring(str2.Length);
Console.WriteLine("Strings after swap");
Console.WriteLine(str1);
Console.WriteLine(str2);
}
}실행 결과
Strings before swap Brad Pitt Strings after swap Pitt Brad
실행 결과를 보면 임시 변수 없이도 두 문자열의 값이 성공적으로 교환된 것을 확인할 수 있습니다. 다만 실무 환경에서는 코드의 가독성과 유지보수성을 고려할 때 임시 변수를 사용하는 방식이 더 직관적일 수 있으므로, 상황에 맞게 선택하는 것이 좋습니다.