📚 Chapter 1.5: 메서드 오버로딩, params, optional parameter
✅ 이 챕터에서 배울 것
C# 메서드는 그냥 void Method()
하나만 쓰는 거 아이라!
상황에 따라 인자 개수를 다르게 받고,
옵션 값은 안 넣어도 되고,
배열처럼 여러 개 한번에 넘기기도 한다!
- 메서드 오버로딩이란?
params
키워드 쓰는 법
- optional parameter (선택적 매개변수)의 실제 활용
🧠 메서드 오버로딩이란?
이름은 같지만, 매개변수(인자)의 타입이나 개수가 다른 메서드를 여러 개 정의하는 것!
class Calculator
{
// 정수 덧셈
public int Add(int a, int b)
{
return a + b;
}
// 실수 덧셈 (오버로딩)
public double Add(double a, double b)
{
return a + b;
}
// 세 개 숫자 더하기 (오버로딩)
public int Add(int a, int b, int c)
{
return a + b + c;
}
}
✅ 호출하는 쪽에서는 인자에 맞는 버전이 자동 호출됨!
💡 오버로딩 유의사항
- 이름이 같아도 매개변수 타입 or 개수 다르면 오버로딩 가능!
- 리턴 타입만 다르고 매개변수가 같으면 ❌ 안 됨!
// 아래 코드는 에러! (리턴만 다르고 인자가 같음)
int Print() { ... }
string Print() { ... } // ⚠️ 컴파일 에러!
🧺 params 키워드
매개변수 개수를 가변적으로 받고 싶을 때!
매개변수를 배열처럼 받을 수 있게 해줌
public int Sum(params int[] numbers)
{
int total = 0;
foreach (int n in numbers)
{
total += n;
}
return total;
}
// 사용 예시
int result = Sum(1, 2, 3, 4, 5); // 매개변수 여러 개 가능!
✅ params는 항상 마지막 매개변수로만 선언해야 한다!
✨ 실전 꿀팁: params + 기본값 같이 쓰기
public void PrintItems(string title, params string[] items)
{
Console.WriteLine("▶ " + title);
foreach (var item in items)
{
Console.WriteLine("- " + item);
}
}
🎯 선택적 매개변수 (optional parameter)
매개변수에 기본값(default value) 을 지정해서,
생략 가능하게 만드는 문법
public void PrintInfo(string name, int age = 30)
{
Console.WriteLine($"{name}님의 나이는 {age}세입니다.");
}
PrintInfo("장선생"); // age 생략됨 → 30
PrintInfo("장선생", 45); // age = 45
📛 주의 사항
항목 | 설명 |
optional은 항상 뒤에 | 기본값 있는 파라미터는 항상 마지막에 둬야 함 |
params + optional? | 가능은 한데, 가독성 신경 써야 함 |
오버로딩 + optional | 헷갈리기 쉬우니 문서화 중요함 |
✅ 정리 표
기능 | 설명 | 예시 |
오버로딩 | 메서드 이름 같지만 매개변수 다름 | Add(int, int) , Add(double, double) |
params | 여러 개 인자 받아서 배열처럼 사용 | Sum(params int[]) |
optional | 생략 가능한 매개변수 | PrintInfo(string, int age = 30) |
💥 장선생의 실전 꿀팁
- 오버로딩은 읽기 쉬운 코드를 만드는 핵심
- params는 기능이 비슷한 파라미터 묶을 때 유용
- optional은 간단한 API 설계 시 강력한 도구
- 세 개 다 섞어서도 사용할 수 있으나, 너무 꼬이면 유지보수 어려움 → 명확하게 쓰자
✅ 요약 정리
개념 | 핵심 |
오버로딩 | 같은 이름 다른 매개변수 조합 가능 |
params | 매개변수 개수 자유롭게 받기 |
optional | 매개변수 생략하고 기본값 쓰기 가능 |
📘 다음 챕터 예고 🎓
Chapter 1.6: 클래스와 구조체 – 차이점과 메모리 이해까지 완전정복!
class와 struct, 똑같아 보이지만 성질이 다르다!
힙 vs 스택, 값 복사 vs 참조 복사 개념 뿌리부터 잡아준다잉!