다음 코드의 실행 결과는?

과목: C#

문제 번호: 2616

hard
다음 코드의 실행 결과는?
static string Join(string a, string b)
{
    return a + "-" + b;
}

static string Join(string a, string b, string c)
{
    return a + "+" + b + "+" + c;
}

static int Join(int a, int b)
{
    return a + b;
}

static void Main(string[] args)
{
    Console.WriteLine(Join("A", "B"));
    Console.WriteLine(Join("X", "Y", "Z"));
    Console.WriteLine(Join(10, 20));
}
A.
A-B
X+Y+Z
30
B.
AB
XYZ
1020
C.
A-B
X-Y-Z
30
D. 컴파일 오류

정답: A



여러 타입과 개수로 오버로딩된 메서드를 호출하는 예제입니다.

각 호출 분석:

1. Join("A", "B")
⦁ 문자열 2개 → 첫 번째 메서드 호출
return "A" + "-" + "B" → "A-B"

2. Join("X", "Y", "Z")
⦁ 문자열 3개 → 두 번째 메서드 호출
return "X" + "+" + "Y" + "+" + "Z" → "X+Y+Z"

3. Join(10, 20)
⦁ 정수 2개 → 세 번째 메서드 호출
return 10 + 20 → 30

컴파일러의 메서드 선택 과정:
⦁ 인수의 개수 확인
⦁ 인수의 타입 확인
⦁ 가장 적합한 오버로드된 메서드 선택

오버로딩의 실용적 활용:
⦁ 동일한 작업을 다양한 타입/개수로 처리
⦁ 사용자가 타입을 신경 쓰지 않고 호출 가능
⦁ 코드의 직관성과 재사용성 향상

💡 학습 팁

이 문제를 포함한 C# 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.