C#

C# 기초부터 고급까지 Chapter 1.5. 메서드 오버로딩, params, optional parameter

Juan_ 2025. 4. 24. 22:10
728x90

📚 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 참조 복사 개념 뿌리부터 잡아준다잉!
728x90